[英]Is it possible to “symlink” a function in PHP easily - or alias the name to something else?
[英]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.