PHP çalışma sırasında İşlevleri yeniden adlandırma

2 Cevap php

PHP 5.3 'te bir işlevi ya da "kanca" bir işlev yeniden adlandırmak için bir yol var.

rename_function() ~ 2004 yılından beri bozuldu "AKB" içinde bulunmaktadır. Denemek ve PHP 5.3 üzerinde inşa Eğer bu hatayı alırsınız:

'struct _zend_compiler_globals' has no member named 'extended_info'

Bu sadece bu hat değiştirmek, düzeltmek için gerçekten kolay bir hatadır:

GC(extended_info) = 1;

karşı

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

Benim php.ini değiştirilmiş ve APD () olması gerektiği gibi benim phpinfo kadar gösterir. Ancak i rename_function() PHP sayfası yüklemez aramak ve benim /var/log/apache2/error.log bir segment hataya olsun.

Is there anyway karşı fix APD karşı work with a modern version of PHP? Or is there another method karşı rename functions? Why on earth is vital feature not in php!??!?! (Gotta love python :)

2 Cevap

Runkit gövde uyumlu 5.3 + 'dır.

svn checkout http://svn.php.net/repository/pecl/runkit/trunk runkit
cd runkit
phpize
./configure
make && make install

Php.ini = runkit.so uzantısı eklemek (veya conf.d içinde runkit.ini)

runkit_function_rename() da --enable-maintainer-zts yapılandırma bayrağı ile php derlemek zorunda olacak kullanmak için. (Lanet Zend!)

Bu soru biraz eski olduğunu biliyoruz, ama son zamanlarda test için fonksiyonları yeniden adlandırmak için bir yol arıyor ve AKB ile benzeri zorluklar koştu.

Sonunda sağ Google sorguda vurdu ve başka bir seçenek bulundu: Sebastian Bergmann en test_helpers extension - kendi vardır rename_function() yakalama için sadece iyi, yanı sıra bazı diğer kullanışlı yardımcıları iş gibi görünüyor ve şeyler alaycı.

Bonus - nispeten ağrısız yükleme işlemi:

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

Ve sonra php.ini için extension=test_helpers.so ekleyin