मैं PHP में काम कर रहा हूं।किसी अन्य फ़ंक्शन को कॉल करके फ़ंक्शन सेट में स्टेटिक चर
मेरे पास एक फ़ंक्शन (एफ 1) है जिसे एक परिवर्तनीय मात्रा कहा जाता है। उस फ़ंक्शन के भीतर, मुझे किसी अन्य फ़ंक्शन (F2) से निरंतर डेटा सेट लोड करने की आवश्यकता है। यह हमेशा एक ही डेटा सेट लोड होता है, हालांकि सेट लोड करने में कुछ डेटाबेस लुकअप और प्रोसेसिंग शामिल होती है। एफ 2 को बार-बार कॉल करने और ओवरहेड/रिडंडेंसी/प्रसंस्करण आवश्यकताओं को बढ़ाने के बजाय, मैं परिणाम को एफ 1 में स्थिर चर में डाल देना चाहता हूं। हालांकि, किसी भी कारण से, यह मुझे फ़ंक्शन कॉल का उपयोग करके वैरिएबल को स्थिर के रूप में सेट करने की अनुमति नहीं देगा।
एक कोड उदाहरण:
function calledRepeatedly() {
static $dataset = loadDataset();
// some minor processing here using the dataset
// and probably a loop
return "stuff";
}
function loadDataset() {
//intensive dataset load code
//plus a database lookup or two
//whatever else
return array(
"data1",
"data2"
);
}
से काम नहीं होता। इसके परिणामस्वरूप एक त्रुटि - अप्रत्याशित '(', उम्मीद ',' या ';'
मुझे एहसास है कि यह काम करेगा, और इस प्रकार संदर्भ द्वारा पारित किया जाएगा इस प्रकार ओवरहेड को खत्म कर दिया जाएगा, हालांकि इसमें अतिरिक्त कार्य शामिल है सुनिश्चित करें कि वास्तव में तर्क सूची में डाटासेट है calledRepeatedly को कॉल करने की।
वहाँ किसी भी तरह से यह करने के लिए है?
आप एक स्थिर चर में अभिव्यक्तियों को संग्रहीत नहीं कर सकते हैं। उन्हें संकलन समय पर हल किया जाता है ताकि फ़ंक्शन को अभी तक नहीं कहा जा सके। मुझे नहीं पता कि PHP स्थिर कार्यों का समर्थन करता है या नहीं। –
कक्षा बनाने और इसे किसी संपत्ति में सहेजने के बारे में कैसे? ;-) – thedom
@ मार्क, केवल कक्षाओं के भीतर। –