繁体   English   中英

是否可以替换php中的函数(如邮件)并使其执行其他操作?

[英]Is it possible to replace a function in php (such as mail) and make it do something else?

我想在PHP中重写一个函数(比如说mail()函数),并且想要从现在开始调用mail()时,它会加载我的mail()版本而不是默认的php版本。 这可能在PHP?

我想这样做的原因是因为我有数千行代码调用mail()而我不想重写所有这些代码。

同样为了将来参考,在计算机编程中,当你做这样的事情时它叫什么?

有一个扩展,允许您覆盖功能。 它用于调试,但我想你可以根据自己的需要使用它。 看一看:

http://www.php.net/manual/en/function.override-function.php

如果您想在您的版本中调用原始函数,请务必阅读此评论: http://no.php.net/manual/en/function.override-function.php#50821

你所指的通常称为方法重载

虽然PHP通常不支持,但您实际上可以使用runkit_function_remove()runkit_function_redefine() 重新定义内部函数(以及用户函数runkit_function_redefine() 当然要使用它,你需要完全控制PHP安装 - 因为它没有与PHP捆绑在一起,你需要安装runkit扩展

同样, 在正常情况下,内部函数以及用户函数不能在PHP中重新定义 (或重载)。 这种情况说明了使用用户功能包装一些内部函数的好处。

它被称为函数重载,在本机 PHP中是不可能的,但可以使用其他答案中概述的扩展。 PHP文档声称它根本不可能: 不正确。

您可以使用regexp替换文件中的函数名称。 您使用的应用程序取决于您,但我建议使用价格过高的Powergrep (除非您不再需要它)。

更换

   (\s+)mail([\s(]+)

   $1new_function_name$2

   ^mail([\s(]+)

   new_function_name$1

对不起我的regexp-fu,我不知道如何在一个表达式中搜索任何空格或开始行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM