是否可以替换php中的函数(例如mail)并使其执行其他操作?
我想在PHP中重写一个函数(假设是mail()函数),并且希望从现在开始调用mail()时,它将加载我的mail()版本,而不是默认的php版本。这在php中可能吗?
我想这样做的原因是因为我有数千行代码调用mail(),我不想重写所有这些代码。
另外,为了将来的参考,在计算机编程中,当您做这样的事情时,它叫什么?
我想在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(
)重新定义内部函数(以及用户函数)。
当然,要使用它,您需要完全控制PHP安装 - 因为它没有与PHP捆绑在一起,因此您需要安装runkit扩展。
同样,在正常情况下,内部函数和用户函数不能在PHP中重新定义(或重载)。这种情况说明了使用用户函数包装某些内部函数的好处。