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

时间:2011-04-30 15:21:06

标签: php email replace built-in

  

可能重复:
  Redefine Built in PHP Functions

你好!

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

谢谢!

4 个答案:

答案 0 :(得分:7)

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

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

如果您发现自己想要替换PHP内置函数,那么可能是您的代码错误,而不是PHP。当然,一些PHP内置的 suck ,但用你的修改版本替换函数的预期行为会使你的代码的未来维护者想要在你的谋杀中谋杀你睡眠。

答案 1 :(得分:6)

理论上你可以使用APD override_function来做到这一点,但我真的非常建议不要这样做。

有什么理由你不能只是给你的功能一个不同的名称并使用该名称而不是邮件?

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

答案 2 :(得分:4)

检查出来:http://php.net/manual/en/function.override-function.php

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

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

答案 3 :(得分:2)

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