मेरे पास एक बेस क्लास है जिसे मुझे कक्षा में संदर्भित कक्षा में कार्यों को कॉल करने की आवश्यकता है।अभिभावक वर्ग से बाल वर्ग स्थिर चर का उपयोग करें?
आसान पर्याप्त,
class base_class {
public function doSomethingWithReference(){
$this->reference->doSomething();
}
}
class extended_class extends base_class{
protected $reference;
public function __construct($ref){
$this->reference = $ref;
}
}
अब इस ठीक जाहिर है काम करता है,
लेकिन, जब मैं मैं $this->reference
का मूल्य लेकिन, उद्देश्य यह है कि $this->reference
के बारे में परवाह नहीं है डिबगिंग हूँ इसका मतलब है विशाल है!
इसलिए, जब मैं print_r($instanceOfExtendedClass)
करता हूं तो मुझे उस ऑब्जेक्ट का प्रिंट आउट मिलता है।
अब प्रत्येक वर्ग के लिए संदर्भ अलग है जो base_class
बढ़ाता है।
मैं जो करना चाहता था वह extended_class
कक्षा पर एक स्थिर संपत्ति के रूप में बस reference
सेट करना था।
लेकिन फिर doSomethingWithReference
self::$reference
बदलना एक अपरिभाषित चर त्रुटि को फेंकता है।
और base_class
में स्थिर चर सेट करने और extended_class
से इसे संशोधित करने से यह काम नहीं करता है क्योंकि यह उस वर्ग से फैली सभी चीज़ों के लिए चर बदलता है।
क्या ऐसा करने का कोई तरीका है इसलिए मुझे $this->reference
का प्रिंट आउट नहीं मिला है?
आप किस PHP संस्करण के साथ काम कर रहे हैं? 5.3 में 'स्थिर' व्यवहार में कुछ [* बड़े * परिवर्तन थे] (http://php.net/language.oop5.late-static- बाइंडिंग), और यह जानकर कि क्या आप किसी पुराने चीज़ पर फंस गए हैं, आपको एक बहुत अलग जवाब। – Charles
PHP संस्करण 5.3 – Hailwood
यह वर्ग संरचना कुछ का उल्लंघन करती है, मुझे यकीन नहीं है कि यह क्या है :) –