如何在没有APD的情况下覆盖现有的PHP函数?

时间:2010-06-23 09:48:08

标签: php

我想覆盖已经在PHP中声明的几个函数。我正在使用的应用程序充满了遗留代码(包括对eval()的调用),因此只需替换代码中调用函数的标识符可能就不够了。

是否可以在不使用PHP5中的Advanced PHP Debugger的情况下更改已声明的函数?

2 个答案:

答案 0 :(得分:2)

是的,使用

这是PECL扩展,可以通过PEAR安装。但请记住,重新声明函数不能代替正确的重构。你只是将一种邪恶换成另一种邪恶。

另见Is it possible to replace (monkeypatch) PHP functions?

答案 1 :(得分:0)

常见问题 - 为什么?你期望实现什么目标?

  

包括对eval()的调用

您是否建议您编写自己的eval()函数?祝好运!或者你只是想禁用某些功能?如果是后者,那么您如何知道您的虚拟替换不会导致功能问题?如果您只想禁用特定功能,那么您可以从php.ini文件中执行此操作。

OTOH,如果是我和我有工作包装/替换功能,我只需使用findsed重写文件,然后添加一个auto-prepend包含文件,其中包括相关的功能定义。 (实际上,我过去做的确实如此)。

HTH

下进行。