可能重复:
重新定义内置 PHP 函数
你好!
由于我的服务器没有本地可用的“sendmail”命令,并且我已经编写了一个与 api 兼容的替换 mail() 函数,我该如何替换 PHP 的内置 mail() 函数?(或其他人;除此之外,还有一些需要更换。)
谢谢!
可能重复:
重新定义内置 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()
,但我不会将其称为“批准”方式,因为不应该这样做。