2011-04-02 15 views
5

पर कार्य का मान असाइन करें ठीक है यह एक बेवकूफ सवाल है, लेकिन मैं बेवकूफ होने के सटीक कारण के बारे में सोच नहीं सकता।PHP - कक्षा निरंतर

PHP में जब आप निरंतर में के रूप में एक वर्ग के स्तर को परिभाषित: पार्स करने के दौरान स्थिरांक बदल दिया जाता है:

const MY_CONSTANT = 'hello constant'; 

कारण है कि आप एक समारोह के रूप में

const MY_FILEPATH = dirname(dirname(__FILE__)) . '/heres-my-file.php'; 
+4

SO में आपका स्वागत है। इस पर गहराई से पहले से ही चर्चा की जा चुकी है: http://stackoverflow.com/questions/3960323/why-dont-php-attributes-allow- उत्तर लंबा है :) वैसे भी, यह निश्चित रूप से संभव नहीं है, आप छोड़ना चाह सकते हैं उस पर –

उत्तर

14

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

+1

हाय, धन्यवाद। ठीक है कि उस तरह का अर्थ समझ में आता है। इस तरह की चीज करने के लिए सबसे अच्छा अभ्यास क्या है क्योंकि यह बहुत कुछ होना चाहिए - जहां निरंतर मूल्य का पुनर्गठन किया जाता है लेकिन इसे किसी फ़ंक्शन कॉल या किसी चीज़ से परिभाषित किया जाता है। – David

1

कॉन्स्टेंट अपरिवर्तनीय हैं। इसलिए, यदि फ़ंक्शंस स्थिर के मान को बदल सकता है तो यह स्थिर नहीं होगा।

+0

हां लेकिन मैं स्थिर के मान को बदलने की कोशिश नहीं कर रहा हूं, इसके बजाय मैं इसे किसी फ़ंक्शन के मान के साथ शुरू करने की कोशिश कर रहा हूं। – David

+0

मैं समझता हूं कि आपका क्या मतलब है। हालांकि, अगर फ़ंक्शन निरंतर प्रारंभ कर सकता है, तो सैद्धांतिक रूप से यह अपना मान बदल सकता है। क्योंकि निरंतर वर्ग में प्रारंभ किया जाना चाहिए (यदि इसे कक्षा में भी घोषित किया गया था)। – Nabeel

+0

"अगर फ़ंक्शन एक स्थिर प्रारंभ कर सकता है, सैद्धांतिक रूप से यह इसके मान को बदलने में सक्षम होगा"। यह मेरे लिए ज्यादा समझ में नहीं आता है। यदि निरंतर प्रारंभ होता है, तो यह स्थिर होता है। यदि यह प्रारंभ नहीं हुआ है, तो यह अस्तित्व में नहीं है। कोई बदलाव नहीं होता है। – KingCrunch

संबंधित मुद्दे