drupal_static () एक FUNCTION चर का उपयोग करता है, इसका क्या मतलब है?


21
function drupal_set_page_content($content = NULL) {
     $content_block = &drupal_static(__FUNCTION__, NULL);
     $main_content_display = &drupal_static('system_main_content_added', FALSE);

 if (!empty($content)) {
   $content_block = (is_array($content) ? $content : array('main' => array('#markup' => $content)));
 }
 else {
   $main_content_display = TRUE;
   return $content_block;
  }
}

यह स्निपेट common.inc से चिपकाया गया है। हम एक में पारित __FUNCTION__करने के लिए drupal_static(), लेकिन मैं क्या इस चर का मतलब पता नहीं है। क्या यह बाहरी कार्य के लिए कैश का मतलब है? यह कैसे काम करता है? वापस आने से पहले मुझे फ़ंक्शन के अंदर संभाला हुआ कोई डेटा दिखाई नहीं देता है $content_block

जवाबों:


34

__FUNCTION__PHP के तथाकथित मैजिक कॉन्स्टेंट में से एक है।

यह सब करता है कि फ़ंक्शन के नाम के साथ एक स्ट्रिंग लौटाता है जो स्थिर में निहित है।

उदाहरण के लिए:

function my_strangely_named_function() {
  print __FUNCTION__;
}

ऊपर 'my_stranprise_ame_function' प्रिंट होगा।

Drupal अपने स्थिर कैश के साथ इस स्थिरांक का उपयोग करता है ताकि प्रत्येक कैश किसी अन्य फ़ंक्शन से पहचाने जा सके, और जैसे कि पहचाना जा सकता है।

अपने कोड के संक्षिप्त संस्करण का उपयोग करने के लिए:

function drupal_set_page_content($content = NULL) {
  $content_block = &drupal_static(__FUNCTION__, NULL);
}

Drupal जीवनचक्र में कोई अन्य फ़ंक्शन कॉल कर सकता है:

drupal_static_reset('drupal_set_page_content');

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

यह स्थैतिक कैश पैटर्न का सिर्फ मूल उपयोग है, आप अपने लिए प्रलेखन पृष्ठdrupal_static() पर अधिक जानकारी और उदाहरण पा सकते हैं ।


आपके उत्तर के लिए धन्यवाद, मुझे अब समझ में आया कि इस FUNCTION का क्या अर्थ है, लेकिन इससे भी अधिक, यह $ content_block चर पहले कहां बनाया गया है, जैसा कि मैं इस कोड में पा सकता हूं, क्या यह कैश से डेटा पुनर्प्राप्त करता है, लेकिन कैश को कहां बनाया गया है पहला स्थान, धन्यवाद!
Drupal cai

1
क्या आप सामान्य रूप से PHP में स्थिर चर से परिचित हैं?
क्लाइव

1
पहली टिप्पणी, और दूसरे को संवर्धित करते हुए, 'कैश' ifकथन की TRUE शाखा में बनाया गया है
जिमजम्मा

1
@ जयजम्मा ने क्या कहा, साथ ही यह तथ्य कि drupal_staticसिस्टम में सभी कार्यों के लिए कैश की एक रजिस्ट्री रखता है जो इसका उपयोग करते हैं।
क्लाइव

1
यह मेरे PHP अज्ञानता का एक प्रदर्शन हो सकता है, लेकिन - वैसे भी: वे परिश्रम में क्यों कहते हैं: drupal_staticबजाय &drupal_static?
अर्तुर

3

गहराई से जानकारी आपको http://blogs.sourceallies.com/2012/02/static-caching-in-drupal/ पर मिलेगी । यहाँ से एक उद्धरण है:

... कैशिंग (किसी भी प्रकार का, केवल स्थैतिक कैशिंग नहीं) एक जिम्मेदार तरीके से किया जाना है। कैशिंग फ्लड मेमोरी का अत्यधिक उपयोग जो उच्च यातायात वेबसाइटों को क्रैश कर सकता है। यह भी याद रखें कि कैशिंग का उपयोग बड़े डेटा संरचनाओं के लिए किया जाना चाहिए जो उत्पन्न करने के लिए महंगे हैं। अंत में, कैशिंग का उपयोग केवल तभी करें जब आप यह सुनिश्चित कर लें कि आपको फिर से कैश की आवश्यकता होगी (उदाहरण के लिए, ड्रुपल में मेनू डेटा)। नाम या पते या रंगों की सूची को कैशिंग करने का कोई मतलब नहीं है अगर उस सूची का फिर से उपयोग नहीं किया जाएगा। यह आपके पुराने कार के टायरों को बचाने के बाद होगा जैसा कि आप नए पर डालते हैं।

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