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

PHP में ''टाइप की गई प्रॉपर्टी को आरंभीकरण से पहले एक्सेस नहीं किया जाना चाहिए'' त्रुटि को कैसे ठीक करें?

2024-12-23 को प्रकाशित
ब्राउज़ करें:514

How to Fix the \

"टाइप की गई संपत्ति को आरंभीकरण से पहले एक्सेस नहीं किया जाना चाहिए" त्रुटि को समझना

PHP 7.4 में संपत्ति प्रकार के संकेतों की शुरूआत के साथ, वैध मान निर्दिष्ट करना महत्वपूर्ण है सभी संपत्तियों को यह सुनिश्चित करने के लिए कि उनके घोषित प्रकारों का सम्मान किया जाता है। एक अपरिभाषित संपत्ति, जिसका कोई निर्दिष्ट मूल्य नहीं है, किसी भी घोषित प्रकार से मेल खाने में विफल रहती है और त्रुटि संदेश ट्रिगर करती है: "टाइप की गई संपत्ति को आरंभीकरण से पहले एक्सेस नहीं किया जाना चाहिए"।

उदाहरण के लिए, नीचे दिए गए कोड पर विचार करें:

class Foo {
    private string $val;

    public function __construct(int $id) {
        $this->id = $id;
    }

    public function getVal(): string { return $this->val; }
}

Foo के निर्माण के बाद $val तक पहुंचने पर त्रुटि होगी, क्योंकि इसका प्रकार अभी तक परिभाषित नहीं किया गया है (अपरिभाषित !== शून्य)।

इसे हल करने के लिए, सभी संपत्तियों के लिए मान निर्दिष्ट करें निर्माण या उनके लिए डिफ़ॉल्ट मान सेट करें:

class Foo {
    private string $val = null;  // default null value

    public function __construct(int $id) {
        $this->id = $id;
    }
}

अब, सभी संपत्तियों में वैध मान हैं, जिससे त्रुटि समाप्त हो गई है।

यह समस्या तब भी उत्पन्न हो सकती है जब इकाई संपत्तियों के लिए डेटाबेस मूल्यों, जैसे ऑटो-जेनरेटेड आईडी या टाइमस्टैम्प पर भरोसा किया जाता है। स्वचालित रूप से जेनरेट की गई आईडी के लिए, उन्हें अशक्त घोषित करें:

private ?int $id = null;

अन्य सभी के लिए, उपयुक्त डिफ़ॉल्ट मान चुनें जो उनके प्रकारों से मेल खाते हों।

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3