अगर function_exists का उपयोग क्यों करते हैं?


30

मैंने देखा कि वर्डप्रेस थीम के बहुत सारे डेवलपर फ़ंक्शन का उपयोग करते हैं

if (function_exists('register_nav_menus')) {
    register_nav_menus (array('primary' => 'Header Navigation'));
}

मेरे लिए, मैं alwayse हर कार्य मैं में उपयोग कर रहा हूँ के लिए उपयोग ADD_ACTION functions.php

तो, ऊपर लिखा जाएगा:

add_action('init', 'my_register_nav_menus');

function my_register_nav_menus() {
    register_nav_menus (array('primary' => 'Header Navigation'));
}

मेरे दो सवाल हैं:

  1. यदि पहली विधि में बयान का उपयोग क्यों करें?

  2. सही तरीका कौन सा है?

जवाबों:


35

यह देखने के लिए कि क्या वर्डप्रेस फंक्शंस में बनाया गया है, उन्हें कॉल करने से पहले मौजूद है जो कि बैकवर्ड कम्पैटिबिलिटी के लिए है, जिसकी आईएमएचओ को जरूरत नहीं है।

तो अगर आप देख if ( function_exists( 'register_nav_menus' ) )विषय लेखक 3.0 से पहले के संस्करणों समर्थन कर रहा है।

तुम अब भी कभी-कभी if ( function_exists( 'dynamic_sidebar' ) )क्यों देखते हो ? मैं आपको नहीं बता सकता क्योंकि डायनेमिक_साइडबार को 2.2 में पेश किया गया था।

इसका उपयोग करने का एक अन्य कारण यह है कि यह आपके थीम या प्लगइन को प्लग-इन करने योग्य है। एक प्लग करने योग्य फ़ंक्शन वह है जिसे बच्चे के विषय या किसी अन्य प्लगइन में ओवरराइड किया जा सकता है।

यह कॉल न करने की परिभाषा पर किया गया है और आप इसका उपयोग करते हैं! इससे पहले कि आप इसे परिभाषित करें, यह सुनिश्चित करने के लिए ऑपरेटर पहले से मौजूद नहीं है।

if ( ! function_exists( 'my_awesome_function' ) ) {
/**
 * My Awesome function is awesome
 *
 * @param array $args
 * @return array
 */
function my_awesome_function( $args ) {
  //function stuff
  return array();
  }
}

जब यह एक बाल विषय या अन्य प्लगइन किया जाता है तो उस फ़ंक्शन को स्वयं के साथ ओवरराइड कर सकता है।


9

function_existsसमारोह की तरह समारोह लोड करने के लिए एक अन्य तरीका नहीं हैadd_action अपने तो यह आपके कोड को तोड़ने नहीं होगा कि एक ही नाम के साथ कोई अन्य समारोह देखते हैं कि देखने के लिए अपने कोड की जांच के लिए। Php.net से:

फंक्शन_नाम के लिए, दोनों अंतर्निहित (आंतरिक) और उपयोगकर्ता द्वारा परिभाषित कार्यों की सूची की जांच करता है।

आप अपने कोड में दो बार एक ही समारोह है, तो यह टूट जाएगा, thats तुम क्यों उपसर्ग आपका फ़ंक्शन को wp_ के अलावा किसी अन्य चीज़ के साथ करते हैं।

और पढ़ें: http://php.net/manual/en/function.function-exists.php


0

आप उपयोग कर सकते हैं http://php.net/function_exists का

if(function_exists('my_function')){
   // my_function is defined
}

या यदि आप उपलब्ध सभी फ़ंक्शन को देखना चाहते हैं, तो आप सभी को प्रिंट भी करते हैं,

echo "<pre>"; print_r(get_defined_functions());

पृष्ठ पर प्रिंट करें और आप उस फ़ंक्शन को खोज सकते हैं यदि यह सूची में नहीं मिला है इसका मतलब यह उपयोग करने के लिए उपलब्ध नहीं है।

आपको विशेष पुस्तकालय के लिए विस्तार को सक्रिय करने की आवश्यकता हो सकती है।


0

php.net इसे परिभाषित करता है

(PHP 4, PHP 5, PHP 7) function_exists - यदि दिए गए फ़ंक्शन को परिभाषित किया गया है, तो TRUE लौटाएं

मुझे मिशेल के साथ इस बात से सहमत होना होगा कि आप [श] केवल चेक चेक टाइप करने के लिए कुछ का उपयोग करें; इसलिए आप देख रहे होंगे कि क्या कोई फ़ंक्शन मौजूद था (उस पेज पर या उस पेज / फ़ाइल संदर्भ पर कॉल की गई किसी चीज़ से) तो आपको पता चल जाएगा कि क्या किसी अन्य फ़ंक्शन को चलाने के लिए सुरक्षित है या कुछ टेम्पलेट HTML को पार्स करना संभव है।

जैसा कि किसी ने उल्लेख किया है यह आमतौर पर यह जांचने के लिए उपयोग किया जाता है कि आपकी फ़ाइल / थीम (वर्डप्रेस का उपयोग करके) आपके आवश्यक अनुरोध को चलाने में सक्षम है या नहीं। मैंने इसका उपयोग यह जांचने के लिए किया है कि क्या किसी थीम का एक विशिष्ट टेम्पलेट भाग है।

if ( function_exists( 'register_sidebar' ) ) { get_sidebar(); }


0

function_exists पहले किसी विषय में फ़ंक्शन नाम के बाद उपयोग नहीं किया जाना चाहिए।

add_action( 'loop_start', 'add_slider' );

function add_slider() {

if ( function_exists( 'soliloquy' ) ) { 

soliloquy( 'slider', 'slug' ); 

    }

}

यह सुनिश्चित करने के लिए चेक करता है कि फ़ंक्शन और / या मार्कअप को आउटपुट करने से पहले प्लगइन सक्रिय है अन्यथा आपको अनडिफैक्ट फ़ंक्शन के लिए कॉल जैसी त्रुटि मिल सकती है।

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