"खाली" ऑब्जेक्ट बनाने का मानक तरीका है:
$oVal = new stdClass();
लेकिन, PHP> = 5.4 के साथ, मैं व्यक्तिगत रूप से उपयोग करना पसंद करता हूं :
$oVal = (object)[];
यह छोटा है और मैं व्यक्तिगत रूप से इसे स्पष्ट मानता हूं क्योंकि stdClass नौसिखिया प्रोग्रामर को भ्रामक हो सकता है (यानी "मुझे एक वस्तु चाहिए, एक वर्ग नहीं!" ...)।
PHP <5.4 के साथ भी यही है:
$oVal = (object) array();
(object)[]
के बराबर है new stdClass()
।
PHP मैनुअल ( यहाँ देखें ):
stdClass : ऑब्जेक्ट को टाइपकास्ट करके बनाया गया।
और ( यहाँ ):
यदि कोई वस्तु किसी वस्तु में परिवर्तित हो जाती है, तो उसे संशोधित नहीं किया जाता है। यदि किसी अन्य प्रकार का मान किसी ऑब्जेक्ट में कनवर्ट किया जाता है, तो अंतर्निहित क्लास में एक नया उदाहरण बनाया जाता है ।
हालाँकि याद रखें कि खाली ($ oVal) गलत है , जैसा कि @PaPP ने कहा:
बिना किसी गुण वाली वस्तुएँ अब खाली नहीं मानी जाती हैं।
अपने उदाहरण के बारे में, यदि आप लिखते हैं:
$oVal = new stdClass();
$oVal->key1->var1 = "something"; // PHP creates a Warning here
$oVal->key1->var2 = "something else";
PHP निम्नलिखित वार्निंग बनाता है, जो कि स्पष्ट रूप से संपत्ति बनाता है key1
(एक ऑब्जेक्ट ही)
चेतावनी: रिक्त मान से डिफ़ॉल्ट ऑब्जेक्ट बनाना
यह एक समस्या हो सकती है यदि आपका कॉन्फ़िगरेशन ( त्रुटि रिपोर्टिंग स्तर देखें ) ब्राउज़र को यह चेतावनी दिखाता है। यह एक और संपूर्ण विषय है, लेकिन चेतावनी को अनदेखा करने के लिए त्रुटि नियंत्रण ऑपरेटर (@) का उपयोग एक त्वरित और गंदा तरीका हो सकता है :
$oVal = new stdClass();
@$oVal->key1->var1 = "something"; // the warning is ignored thanks to @
$oVal->key1->var2 = "something else";
$var = (object) (boolean) (string) (int) (array) new StdClass;
तुम्हें पता है, सिर्फ सुरक्षित होने के लिए।