"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > फ़ंक्शन तर्क के रूप में ऑब्जेक्ट की एक श्रृंखला को पास करते समय त्रुटियों को कैसे हल करें?

फ़ंक्शन तर्क के रूप में ऑब्जेक्ट की एक श्रृंखला को पास करते समय त्रुटियों को कैसे हल करें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:291

How to Resolve Errors When Passing an Array of Objects as Function Arguments?

प्रकार संकेत: वस्तुओं की सरणी

किसी फ़ंक्शन के तर्क के रूप में वस्तुओं की एक सरणी पास करते समय, आपको एक त्रुटि का सामना करना पड़ सकता है यदि तर्क प्रकार निर्दिष्ट नहीं है. उदाहरण के लिए, निम्नलिखित कोड पर विचार करें:

class Foo {}

function getFoo(Foo $f) {}

Foo ऑब्जेक्ट की एक सरणी को getFoo में पास करने का प्रयास करने पर एक घातक त्रुटि होगी:

Argument 1 passed to getFoo() must be an instance of Foo, array given

इस समस्या को दूर करने के लिए, आप कस्टम क्लास का उपयोग करके वांछित ऑब्जेक्ट प्रकार की सरणी के रूप में तर्क प्रकार निर्दिष्ट कर सकते हैं। उदाहरण के लिए, एक ArrayOfFoo क्लास को इस प्रकार परिभाषित किया जा सकता है:

class ArrayOfFoo extends \ArrayObject {
    public function offsetSet($key, $val) {
        if ($val instanceof Foo) {
            return parent::offsetSet($key, $val);
        }
        throw new \InvalidArgumentException('Value must be a Foo');
    }
}

यह वर्ग सुनिश्चित करता है कि इसके तत्वों को केवल Foo ऑब्जेक्ट ही सौंपे जा सकते हैं। GetFoo फ़ंक्शन को ArrayOfFoo तर्क स्वीकार करने के लिए अद्यतन किया जा सकता है:

function getFoo(ArrayOfFoo $foos) {
    foreach ($foos as $foo) {
        // ...
    }
}

अब, getFoo में Foo ऑब्जेक्ट की एक सरणी पास करना उम्मीद के मुताबिक काम करेगा।

वैकल्पिक रूप से, प्रक्रिया को सरल बनाने के लिए हल्डेने लाइब्रेरी का उपयोग किया जा सकता है:

class ArrayOfFoo extends \Haldayne\Boost\MapOfObjects {
    protected function allowed($value) { return $value instanceof Foo; }
}

यह वर्ग यह सुनिश्चित करने के लिए अंतर्निहित जांच प्रदान करता है कि सरणी में केवल Foo ऑब्जेक्ट की अनुमति है।

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729205596 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3