我想覆盖已经在PHP中声明的几个函数。我正在使用的应用程序充满了遗留代码(包括对eval()
的调用),因此只需替换代码中调用函数的标识符可能就不够了。
是否可以在不使用PHP5中的Advanced PHP Debugger的情况下更改已声明的函数?
答案 0 :(得分:2)
是的,使用
runkit_function_redefine
- 用新实现替换函数定义这是PECL扩展,可以通过PEAR安装。但请记住,重新声明函数不能代替正确的重构。你只是将一种邪恶换成另一种邪恶。
答案 1 :(得分:0)
常见问题 - 为什么?你期望实现什么目标?
包括对eval()的调用
您是否建议您编写自己的eval()函数?祝好运!或者你只是想禁用某些功能?如果是后者,那么您如何知道您的虚拟替换不会导致功能问题?如果您只想禁用特定功能,那么您可以从php.ini文件中执行此操作。
OTOH,如果是我和我有工作包装/替换功能,我只需使用find和sed重写文件,然后添加一个auto-prepend包含文件,其中包括相关的功能定义。 (实际上,我过去做的确实如此)。
HTH
下进行。