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

amc*_*gor -1 php email replace built-in

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

你好!

正如我的服务器没有本地可用"的sendmail"命令,我写了一个API兼容的替代mail()函数,实际上,我怎么去取代PHP的内置mail()函数?(或其他人;除此之外还有一些需要更换.)

谢谢!

Cha*_*les 7

更换mail是解决这个问题的错误方法.

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

如果您发现自己想要替换PHP内置函数,那么可能是您的代码错误,而不是PHP.当然,一些PHP建宏闹心,但用预期的行为与你的一种改进版本的功能将会使你的代码以后的维护者要谋杀你在你的睡眠.

  • @GothAlice,我通常会建议不会让人受伤的开发过程.**替换PHP内置函数是疯狂**.代码的未来维护者会严重怨恨你.我不能强烈地敦促你不要这样做.**替换PHP内置函数是这个问题的错误解决方案,期间**.**此*有**有效用例.*自从*.** (8认同)
  • @Charles:不能同意.当有人查看代码并且无法弄清楚为什么mail()不像PHP文档那样说它应该表现时会发生什么? (6认同)
  • @GothAlice,请注意,用于替换PHP函数的已发布解决方案需要安装二进制PECL扩展.你*不能*在共享主机上做到这一点.Runkit是高度实验性的,APD是一个调试器.没有共享托管公司会考虑安装这些.**另一方面,您*将能够在共享主机上安装一个备受好评,经过良好测试,高度灵活的第三方邮件库.**`mail`很糟糕,这正是这些库存在的原因. (5认同)
  • @GothAlice:对于那些要求免费帮助解决问题的人来说,"傲慢无助"和"脱离你的高马"可能不是一个好主意.如果您还没有这样做,请阅读[FAQ](http://stackoverflow.com/faq),特别是关于如何对待他人的部分.这个网站的工作是人们互相尊重和礼貌.如果您不想遵守指南,也许您应该在其他地方寻求帮助.谢谢你的合作. (5认同)
  • 我看到只有一个人在这里有态度问题,而且不是@Charles (3认同)
  • @GothAlice,你还继续指责我做出"错误的假设",但是你没有提到什么使你的问题如此完全*特别*你会考虑*打破开发者期望*并使用*实验语言扩展*而不是采取共同的,经过良好测试的,良好支持的路线.您应该阅读[最不惊讶的原则](http://en.wikipedia.org/wiki/Principle_of_least_astonishment).替换PHP内置将会非常惊人.使用第三方库将是一个麻烦. (3认同)
  • @GothAlice:你知道,你可以写一个发送邮件的函数,而不是mail().事实上,如果你自己实施邮件,那么这正是你应该采取的路线,以便当其他人(或你在几个月的时间内)再次查看代码时,他们可以直接发现你已经实现了自己的邮件发送功能,而不是使用mail().顺便说一句,告诉你不要覆盖mail()的人这样做是出于很好的理由.他们只是想拯救你犯错误.没有必要对此粗鲁. (2认同)
  • 等等等.*你*控制服务器?然而`邮件'被打破了?这说明了数量.我们在这里完成了.你去玩得开心. (2认同)

Gor*_*onM 6

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

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

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