कोडर 1 की सलाह बहुत अच्छी है - यह आपको अपने ग्लोबल वेरिएबल नेमस्पेस को बहुत सारे जंक के साथ पॉपुलटिंग करने से रोकती है। यह शायद सबसे अधिक "सुरुचिपूर्ण" है। यदि आप PHP के बजाय नए हैं तो यह उपयोग करना सबसे आसान नहीं हो सकता है (जो मुझे लगता है कि यदि मामला वापस लौटने के लिए अपने सिर को प्राप्त करना मुश्किल हो तो यह मामला हो सकता है, लेकिन यह ठीक है)।
हालांकि, यदि यह वास्तव में प्राथमिकता है, तो शायद आपको एक अतिरिक्त वैश्विक चर होने की परवाह नहीं है।
मुझे लगता है कि मैं यहां स्पष्ट बता रहा हूं - लेकिन आप निष्पादन में बहुत अधिक बिंदु पर (बशर्ते आपको जो जानकारी चाहिए वह पहले से ही उत्पन्न हो चुकी है - उदाहरण के लिए, $ उपयोगकर्ता परिवर्तक पॉप्युलेट किया गया है), ऐसा करें:
$GLOBALS['users_friends_ids'] = /* your code goes here */
अपने खाके में
उसके बाद, आप के द्वारा इस का उपयोग ...
$friendsArray = $GLOBALS['users_friends_ids'];
या आप बस निर्माण
global $user_friends_ids;
उपयोग कर सकते हैं
जब आप चर को प्रारंभ करना चाहते हैं, या किसी फ़ंक्शन या क्लास के अंदर पहुंचें (जो आपकी टेम्पलेट फ़ाइलों के मामले में है - उन्हें अंदरूनी फ़ंक्शंस कहा जाता है, इसलिए आपको $GLOBALS
सरणी को वैश्वीकरण या उपयोग करने की आवश्यकता है, जो "स्वचालित रूप से" है वैश्विक नामस्थान में सक्रिय सभी चर)।
ऐसा करने के लिए सबसे अधिक "लॉजिकल" जगह मॉड्यूल के अंदर उपलब्ध होगी, जिसमें कई हुक उपलब्ध हैं, इस कोड को केवल एक बार निष्पादित करने के लिए। hook_init()
यह आपके लिए कर सकता है, यदि उपयोगकर्ता ऑब्जेक्ट पहले से ही इस बिंदु पर लोड हो चुका है (सुनिश्चित नहीं है, आपको परीक्षण करना होगा)। लेकिन हो सकता है कि आप ड्रूपल मॉड्यूल बनाने के बारे में नहीं जानना चाहते (यह मुश्किल नहीं है)।
यदि आप इसे एक टेम्पलेट के अंदर कर रहे हैं (और हालांकि यह अच्छा अभ्यास नहीं है, तो PHP के शुरुआती ज्ञान वाले कई ड्रूपल साइट मालिक टेम्पलेट्स में सब कुछ डालते हैं), आप जानना चाहेंगे कि कौन सा टेम्पलेट कोड निष्पादित किया जा रहा है। नोड टेम्पलेट कोड पृष्ठ टेम्पलेट कोड से पहले निष्पादित किया जाता है - जो तार्किक है, अन्यथा पृष्ठ टेम्पलेट में नोड सामग्री के चर को पॉप्युलेट नहीं किया जाएगा।
यदि आपके पास नोड्स की सूची है, तो वे इस कोड को कई बार कॉल करेंगे, इसलिए आप कोडर 1 के समान कुछ करने का अंत कर रहे हैं। यदि आप अपना खुद का छोटा मॉड्यूल नहीं बनाना चाहते हैं, तो आप अपनी थीम की template.php फ़ाइल में लिखे गए फ़ंक्शन घोषणा को डाल सकते हैं, क्योंकि इसे केवल एक बार कहा जाता है। आप tpl.php फ़ाइलों में फ़ंक्शन घोषणाएं नहीं रखना चाहते हैं, क्योंकि उन्हें कभी-कभी एक से अधिक बार बुलाया जाता है (और आपको एक से अधिक कार्यों को घोषित करने की अनुमति नहीं है)।
यदि आपके पास फ़ंक्शन और रिटर्न को समझने में कठिनाई होती है, तो आप हमेशा अपने कोड में ऐसा कुछ कर सकते हैं (जो बहुत ही सुरुचिपूर्ण है - लेकिन सुरुचिपूर्ण कोड की तुलना में आप समझने वाले सुरुचिपूर्ण कोड के लिए बेहतर है यह आप नहीं करते हैं)।
if(!isset($GLOBALS['users_friends_ids'])) {
$GLOBALS['users_friends_ids'] = /* your code here */
}
मैंने आपकी एक और पोस्ट देखी है कि आप इसका उपयोग कैसे कर रहे हैं। वास्तव में उपयोगकर्ता आईडी के उस सरणी को फिर से बनाने की आवश्यकता नहीं है। आप केवल $ user_friends ($ users_friends_ids के बजाय) सेट करने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं और फिर आप यह देखने के लिए जांच सकते हैं कि उस सरणी में कोई विशिष्ट उपयोगकर्ता आईडी मौजूद है या नहीं: key_exists ($ some_uid, $ users_friends) – Coder1
आप कैसे कॉल करते हैं मॉड्यूल, क्या मॉड्यूल_इनवोक का उपयोग कर है? वास्तव में यहां आप संघर्ष कर सकते हैं :( – james6848
मेरे पास आमतौर पर जेनेरिक साइट सहायक कार्यक्षमता के लिए एक मॉड्यूल होता है, लेकिन यदि आप अभी तक मॉड्यूल के साथ काम करने में सहज नहीं हैं, तो आप बस उस फ़ंक्शन को अपनी template.php फ़ाइल में जोड़ सकते हैं। आपको शायद बदलना चाहिए फ़ंक्शन नाम में 'mymodule' आपके थीम नाम पर। फिर, प्रत्येक टेम्पलेट में आपको उस उपयोगकर्ता आईडी एरे तक पहुंचने की आवश्यकता होती है, बस $ user_friends_ids = mymodule_get_friend_ids(); – Coder1