PHP 7.2 फ़ंक्शन create_function() पदावनत है




(3)

मैंने नीचे अपने आवेदन में create_function का उपयोग किया है।

$callbacks[$delimiter] = create_function('$matches', "return '$delimiter' . strtolower(\$matches[1]);");

लेकिन PHP 7.2.0 के लिए, create_function () पदावनत है।

किसी भी विचार, कैसे PHP 7.2.0 पर ऊपर मेरे कोड को ठीक करने के लिए।

आपकी सहायता के लिए धन्यवाद,


अगर किसी को अपने कोड में दर्जनों create_function() मामलों को अनाम फ़ंक्शंस में अपग्रेड करने की आवश्यकता है, तो मैं Rector नामक टूल पर काम करता हूं।

यह कोड के माध्यम से जाता है और create_function को अनाम कार्यों 1: 1 से बदल देता है। यह 30 विभिन्न मामलों पर परीक्षण किया गया है।

इंस्टॉल करें

composer require rector/rector --dev

सेट अप

# rector.yml
services:
    Rector\Php\Rector\FuncCall\CreateFunctionToAnonymousFunctionRector: ~

अपने कोड पर चलाएं

vendor/bin/rector process src --config rector.yml --dry-run
vendor/bin/rector process src --config rector.yml

आपको माता-पिता को डुप्लिकेट किए गए $delimiter वैरिएबल के कॉल के साथ एक बेनामी फंक्शन (उर्फ क्लोजर) का उपयोग करने में सक्षम होना चाहिए, जैसे:

$callbacks[$delimiter] = function($matches) use ($delimiter) {
    return $delimiter . strtolower($matches[1]);
};

मैं एक बहुत आसान मामले के साथ योगदान करना चाहता हूं जो मुझे एक वर्डप्रेस थीम में मिला और ठीक से काम करने के लिए लगता है:

निम्नलिखित add_filter स्टेटमेंट रखना :

add_filter( 'option_page_capability_' . ot_options_id(), create_function( '$caps', "return '$caps';" ), 999 );

इसके लिए बदलें:

add_filter( 'option_page_capability_' . ot_options_id(), function($caps) {return $caps;},999);

हम फ़ंक्शन बनाने के लिए (), कार्यों को बनाने के लिए एक deprecated create_function () के बजाय बहुत विशिष्ट फ़ंक्शन निर्माण देख सकते हैं। आशा करता हूँ की ये काम करेगा।







php