समस्या यह है कि आप एक निरंतर प्रयोग कर रहे हैं, लेकिन आप एक अभिव्यक्ति का उपयोग कर रहे है कि नहीं है।
कक्षा सदस्य चर को "गुण" कहा जाता है। (...) वे एक सामान्य परिवर्तनीय घोषणा के बाद सार्वजनिक, संरक्षित, या निजी कीवर्ड में से किसी एक का उपयोग करके परिभाषित किए जाते हैं। इस घोषणा में प्रारंभिकरण,
शामिल हो सकता है लेकिन यह प्रारंभिक निरंतर मान होना चाहिए - यह है कि इसे संकलित समय पर मूल्यांकन करने में सक्षम होना चाहिए और मूल्यांकन के लिए रन-टाइम जानकारी पर निर्भर नहीं होना चाहिए।
यह सरल घोषणा, उदाहरण के लिए, संकलन नहीं होगा (पार्स त्रुटि):
class MyClass{
private $myvar = 3+2;
}
लेकिन अगर हम नहीं बल्कि एक स्ट्रिंग है निरंतर कहीं भी होगी साथ concatenated से, सरल निरंतर उपयोग करने के लिए अपनी कक्षा घोषणा बदल उम्मीद के रूप में काम करते हैं।
class MyClass{
const myconst = 'somevalue';
public $myvar = array(0 => self::myconst);
}
$obj = new MyClass();
echo $obj->myvar[0];
के रूप में एक काम के आसपास आप निर्माता में अपने गुण को प्रारंभ कर सकते हैं:,
एलिन
class MyClass{
const myconst = 'somevalue';
public $myvar;
public function __construct(){
$this->myvar = array(0 => 'do something with '.self::myconst);
}
}
$obj = new MyClass();
echo $obj->myvar[0];
मुझे आशा है कि इस मदद करता है
स्रोत
2010-11-28 14:41:19
यदि आप सी मैक्रो की तरह कुछ ढूंढ रहे हैं, तो PHP इस तरह से काम नहीं करता है। इसके अलावा, कोई "संकलन समय" नहीं है। PHP एक दुभाषिया है। – stillstanding
मैनुअल लिखने वाले लोग इस धारणा के तहत प्रतीत होते हैं कि "संकलन समय" है। http://www.php.net/manual/en/language.oop5.properties.php –
एक "संकलन समय" (प्रकार का) है, क्योंकि PHP आंतरिक टेक्स्ट कोड को बाइटकोड में परिवर्तित करते हैं। Http://sebastian-bergmann.de/archives/868-PHP-Compiler-Internals.html – Antoine