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.

最新バージョンの PHP で動作するように APD を修正する方法はありますか? または、関数の名前を変更する別の方法はありますか? なぜ一体なぜPHPではなく重要な機能なのですか!??!?! (パイソンが大好きです:)

4

3 に答える 3

2

この質問は少し古いと思いますが、最近、テスト用に関数の名前を変更する方法を探していたところ、APDで同様の問題が発生しました。

最後に、正しいGoogleクエリを押して、別のオプションを見つけました。SebastianBergmannの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 トランクは 5.3 以降と互換性があります。

svn チェックアウト http://svn.php.net/repository/pecl/runkit/trunk runkit
CDランキット
phpize
。/構成、設定
メイク && メイク インストール

extension=runkit.so を php.ini (または conf.d の runkit.ini) に追加します。

使用するには、構成フラグを使用runkit_function_rename()して php を再コンパイルする必要もあります。--enable-maintainer-zts(くそー、ゼント!)

于 2010-05-17T03:07:37.253 に答える
2

最新の runkit 拡張機能はhttp://github.com/zenovich/runkit にあります。現時点でリリースされている最新バージョンの PHP (4.4 から 5.4+) をすべてサポートしています。この runkit は公式であり、サポートされています。

敬具 ドミトリー・ゼノビッチ

于 2012-09-08T22:01:41.000 に答える