PHP

2010-05-17 4 views
8

में रनटाइम के दौरान फ़ंक्शंस का नाम बदलना PHP 5.3 में फ़ंक्शन का नाम बदलने या फ़ंक्शन को "हुक" करने का कोई तरीका है।PHP

"एपीडी" के भीतर rename_function() है जो ~ 2004 से टूट गया है। आप कोशिश करते हैं और पीएचपी 5.3 पर इसे बनाने यदि आप इस त्रुटि प्राप्त होगी:

को

GC(extended_info) = 1;

:

'struct _zend_compiler_globals' has no member named 'extended_info'

यह एक वास्तव में आसान त्रुटि को ठीक करने के लिए है, तो बस इस लाइन को बदलने

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

मैं अपने php.ini संशोधित और APD() मेरी phpinfo में दिखाई देता है मैं के रूप में टी चाहिए हालांकि जब मैं rename_function() पर कॉल करता हूं तो PHP पृष्ठ लोड नहीं होता है और मुझे अपने /var/log/apache2/error.log में सेगमेंटेशन गलती मिलती है।

क्या एपीडी को PHP के आधुनिक संस्करण के साथ काम करने के लिए ठीक करने के लिए वैसे भी है? या कार्यों का नाम बदलने के लिए एक और तरीका है? क्यों पृथ्वी पर महत्वपूर्ण विशेषता है php में नहीं !??!? (गोटा प्यार पायथन :)

+0

मैं जानता हूँ कि इस सवाल का एक सा पुराना है, लेकिन क्या आप मुझे अपने कोड दिखा सकते हैं? – Glaslos

+0

@Glaslos जहां तक ​​मुझे पता है कि इनमें से कोई भी काम नहीं करता है। – rook

+0

मुझे काम करने के लिए एपीडी मिला। तो शायद मैं आपकी मदद कर सकता हूं ... – Glaslos

उत्तर

2

अप-टू-डेट runkit विस्तार http://github.com/zenovich/runkit पर पाया जा सकता यह सब समकालीन का समर्थन करता है समय के लिए जारी किए गए PHP के संस्करण (4.4 से 5.4+ तक)। यह रनकिट आधिकारिक और समर्थित है।

निष्ठा से, दिमित्री Zenovich

+0

धन्यवाद! यह एक उपयोगी विस्तार है। – rook

2

रंकिट ट्रंक 5.3+ संगत है।

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

php.ini को = runkit.so एक्सटेंशन जोड़ें (या conf.d में runkit.ini)

आदेश runkit_function_rename() आप भी होगा उपयोग करने के लिए --enable-maintainer-zts विन्यास ध्वज के साथ php पुन: संयोजित करने के लिए। (अरे आप ज़ेन!)

2

मुझे एहसास है कि यह सवाल थोड़ा पुराना है, लेकिन मैं हाल ही में परीक्षण के लिए कार्यों का नाम बदलने और एपीडी के साथ समान कठिनाइयों में भाग लेने का एक तरीका ढूंढ रहा था।

अंत में सही गूगल क्वेरी पर मारा और एक और विकल्प मिल गया: सेबेस्टियन बर्गमैन के test_helpers extension - यह अपने आप ही rename_function() ठीक है, साथ ही बाधा उत्पन्न कर रहा है और चीजें मजाक के लिए कुछ अन्य आसान सहायकों काम करने के लिए लगता है कि नहीं है। -

बोनस एक अपेक्षाकृत दर्दरहित प्रक्रिया इंस्टॉल:

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

और फिर अपने php.ini को extension=test_helpers.so जोड़ने

संबंधित मुद्दे