मेरे पास एक महत्वपूर्ण-मूल्य डेटाबेस तालिका है, जहां मैं कुछ सेटिंग्स संग्रहीत करता हूं।PHP की निरंतर वस्तु क्यों नहीं हो सकती है?
मैं इन सेटिंग्स को PHP स्थिर ऑब्जेक्ट में रखना चाहता हूं, क्योंकि उन्हें संपादन योग्य नहीं होना चाहिए।
PHP7 में हम अब यह कर सकते हैं:
define('MySettings', array(
'title' => 'My title'
// etc
));
// And call it with
echo MySettings['title'];
और यह महान काम करता है।
लेकिन कारण है कि मैं ऐसा नहीं कर सकते:
define('MySettings', (object) array('title' => 'My title'));
तो मैं इसे इस के बजाय की तरह कह सकते हैं:
echo MySettings->title;
// or
echo MySettings::title;
यह केवल क्योंकि मुझे लगता है कि यह एक के रूप में यह टाइप करने के लिए जल्दी और खूबसूरत है ऑब्जेक्ट प्रॉपर्टी/स्थिर ($obj->key
, $obj::key
), सरणी ($array['key']
)
क्या कोई कारण यह संभव नहीं है?
क्योंकि तकनीकी रूप से वस्तुओं को स्थिर नहीं किया जा सकता है। उनमें कोड हो सकता है, जिसका अर्थ है कि वस्तु के आंतरिक को बदला जा सकता है, जिसका अर्थ है कि वे स्थिर नहीं हैं।यही कारण है कि आपके पास स्थिरांक है - यह एक वादा/गारंटी है कि आप जो भी स्थिर रखते हैं वह कभी भी नहीं बदलेगा। –
वर्तमान में PHP के भविष्य के संस्करण के लिए अपरिवर्तनीय वस्तुओं का समर्थन करने के लिए एक प्रस्ताव है। यह किसी प्रोग्राम को मानों के सेट के साथ ऑब्जेक्ट बनाने की अनुमति देगा और ऑब्जेक्ट बनने के बाद उन मानों को निश्चित और अपरिवर्तनीय किया जाएगा। आप इसके बारे में यहां और अधिक पढ़ सकते हैं: https://wiki.php.net/rfc/immutability। हालांकि ध्यान दें कि यह अब PHP में नहीं है (7.0), और यह आगामी 7.1 रिलीज में भी नहीं होगा। चर्चाओं के आधार पर, यह 7.2 हो सकता है, लेकिन इस चरण में उस पर कुछ भी वादा करना बहुत जल्दी है। – Simba