8

在 PHP 5.3 中有一种方法可以重命名函数或“挂钩”函数。

rename_function()〜2004年以来,“APD”内部已被破坏。如果您尝试在 PHP 5.3 上构建它,您将收到此错误:

'struct _zend_compiler_globals' has no member named 'extended_info'

这是一个非常容易修复的错误,只需更改此行:

GC(extended_info) = 1;

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

我修改了我的 php.ini,APD 出现在我的 phpinfo() 中。但是,当我调用rename_function()PHP 页面时没有加载并且我的/var/log/apache2/error.log.

无论如何要修复 APD 以使用现代版本的 PHP?还是有另一种重命名函数的方法? 为什么在地球上的重要功能不在 php 中!??!?!(要爱蟒蛇:)

4

3 回答 3

2

Runkit 后备箱兼容 5.3+。

svn 结帐 http://svn.php.net/repository/pecl/runkit/trunk runkit
cd runkit
php化
。/配置
制作 && 制作安装

将 extension=runkit.so 添加到 php.ini(或 conf.d 中的 runkit.ini)

为了使用runkit_function_rename(),您还必须使用--enable-maintainer-zts配置标志重新编译 php。(该死的你zend!)

于 2010-05-17T03:07:37.253 回答
2

我意识到这个问题有点老了,但我最近一直在寻找一种方法来重命名函数以进行测试,并且在使用 APD 时遇到了类似的困难。

最后点击正确的 Google 查询并找到另一个选项:Sebastian Bergmann 的test_helpers 扩展——它有自己rename_function()的似乎工作得很好,以及一些其他方便的帮助工具来拦截和模拟事物。

奖励 - 一个相对轻松的安装过程:

$ pear channel-discover pear.phpunit.de
$ pecl install phpunit/test_helpers

然后添加extension=test_helpers.so到你的 php.ini

于 2012-05-26T19:31:26.937 回答
2

最新的 runkit 扩展可以在http://github.com/zenovich/runkit上找到 它支持所有当前发布的 PHP 版本(从 4.4 到 5.4+)。此 runkit 是官方的并受支持。

此致 德米特里·泽诺维奇

于 2012-09-08T22:01:41.000 回答