add_action (), add_filter () फ़ंक्शन से पहले या बाद में


18

जब वर्डप्रेस स्निपेट / ट्यूटोरियल / प्लगइन्स के माध्यम से देख रहा हूं, तो मैं अक्सर देखता हूं add_action()और add_filter()फ़ंक्शन घोषित होने से पहले रखा जा रहा है:

add_action( 'publish_post', 'email_friends' );

function email_friends( $post_ID ) {
   $friends = 'bob@example.org, susie@example.org';
   mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
   return $post_ID;
}

एक तर्क की दृष्टि से यह मेरे लिए कोई मतलब नहीं है। अपने कोड में कॉल करने के बाद आप फ़ंक्शन को क्यों रखेंगे? यह आमतौर पर है कि मैं एक ही स्थिति को कैसे संभालूंगा:

function email_friends( $post_ID )  {
   $friends = 'bob@example.org, susie@example.org';
   mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
   return $post_ID;
}

add_action( 'publish_post', 'email_friends' );

मुझे पता है कि दोनों परिदृश्य काम करते हैं, लेकिन क्या एक या दूसरे के लिए एक विशिष्ट लाभ है? लगभग ९ ०% समय मैं पहले परिदृश्य का उपयोग होते हुए देखता हूं, जिससे मुझे विश्वास होता है कि किसी न किसी तरह से इसका लाभ है।

जवाबों:


13

: यह पढ़ने में आसान है जब है क्या कहा जाता है? यदि आप एक हुक डिबग कर रहे हैं, तो आप तुरंत देख सकते हैं कि क्या आपको फ़ंक्शन पढ़ना है या नहीं: यदि यह आपका हुक नहीं है, तो आप कोड को छोड़ सकते हैं।

मेरे विषयों और प्लगइन्स में मैं शीर्ष पर क्रियाओं, फ़िल्टर और शॉर्टकोड के लिए सभी पंजीकरणों को जोड़ती हूं और मैं PHPD ब्लॉक में हुक जोड़ता हूं:

add_action( 'wp_head',  'foo' );
add_action( 'shutdown', 'bar' );

/**
 * Foo you!
 *
 * @wp-hook wp_head
 * @return  void
 */
function foo()
{
    print '<!-- foo -->';
}

2
हालाँकि मैं सहमत नहीं हूँ (सिर्फ अपनी व्यक्तिगत पसंद और पिछली कोडिंग प्रथाओं के कारण) कि इसे पढ़ने में आसानी होती है क्योंकि इससे समझ में आता है कि यह इस तरीके से क्यों किया गया है।
voodooGQ

6

वास्तव में कोई वास्तविक अंतर नहीं है, मैं उदाहरण के लिए पहले परिदृश्य का पालन करना पसंद करता हूं, क्योंकि यह एक ही स्थान पर कॉल करने के लिए neater है, और उसके नीचे फ़ंक्शन परिभाषित करता है। PHP कुछ भी चलाने से पहले पूरे दस्तावेज़ को पार्स करता है, और यदि फ़ंक्शन ठीक से परिभाषित हैं, तो सब कुछ सामान्य रूप से काम करेगा, दोनों परिदृश्यों में कोई फायदा नहीं।

मेरा मानना ​​है कि यहाँ सही कहा गया है: जो कुछ भी अपनी नाव तैरता है :)


यह काम नहीं करता है क्योंकि PHP पूरे दस्तावेज़ को पार्स करता है, लेकिन क्योंकि call_user_func_array()(सबसे अधिक संभावना है) आपके फ़ंक्शन की परिभाषा को चलाने के बाद कहा जाता है do_action। तो आप झुके हुए फ़ंक्शन को उस बिंदु तक कहीं भी परिभाषित कर सकते हैं।
कोवशेनिन

1

4 साल बाद, लेकिन मुझे यकीन है कि यह खोज से लोगों को यहां लाने में मदद करेगा।

जैसा कि दूसरों ने कहा है, php में कोई अंतर नहीं है क्योंकि संपूर्ण दस्तावेज़ पार्स करता है और सही क्रम में निष्पादित होता है। इसलिए आपको जो अच्छा लगे।

मुझे व्यक्तिगत रूप से पहली शैली पसंद है:

add_action(hook, bar);
function bar(){
    //code here
}

मैं पीछे की तरफ सोचने लगता हूं। लक्ष्य उन्मुख यदि आप करेंगे। इसलिए मुझे पढ़ना पसंद है, "हम फंक्शन बार, हुक में कर रहे हैं। ठीक है कूल, अब, फ़ंक्शन क्या करता है?"

यह फ़ंक्शन के लिए संदर्भ को बेहतर ढंग से सेट करता है। बेशक यह सिर्फ मेरी निजी पसंद है। इसलिए आपको जो अच्छा लगे वो करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.