什么是最简单的和/或“;批准”;替换内置PHP函数的方法


What is the easiest and/or "approved" way to replace a built-in PHP function?

可能重复:
重新定义内置PHP函数

你好!

由于我的服务器没有本地可用的"sendmail"命令,并且我已经编写了一个与api兼容的替换mail((函数,我该如何实际替换PHP的内置mail((功能?(或者其他;除此之外,还有一些需要更换。(

谢谢!

替换mail是解决此问题的错误方法。

如果您需要发送邮件,但不能调用mail命令,那么您应该使用可以使用其他方法的第三方PHP邮件库。经常推荐使用SwiftMailer。它可以使用mail,调用任何sendmail兼容的二进制文件,或者直接使用SMTP服务器。此外,由于插件架构,它可以扩展为以任何其他方式发送邮件。

如果您发现自己想要替换PHP内置程序,那么错误的可能是您的代码,而不是PHP。当然,一些PHP内置的很糟糕,但用修改后的版本替换函数的<预期行为>会让代码的未来维护者想在你睡觉时杀死你。

理论上可以使用APD override_function来完成此操作,但我真的非常建议不要这样做。

你有什么理由不能给你的功能起一个不同的名字,用这个名字代替邮件吗?

如果你绝对坚持,那么http://php.net/manual/en/function.override-function.php

看看这个:http://php.net/manual/en/function.override-function.php

bool override_function ( string $function_name , string $function_args , string $function_code ) 

通过在符号表中替换内置函数来覆盖它们。

runkit_function_redefine(),但我不会称之为"批准"的方式,因为这不应该这样做。