PHP में new self और new static में क्या अंतर है? लेट स्टैटिक बाइंडिंग
सभी को नमस्ते! PHP में एक अजीब समस्या से तीसरे दिन जूझ रहा हूँ। मेरे पास एक बेस क्लास है जो स्टैटिक मेथड के माध्यम से अपने इंस्टेंस बनाती है। जब मैं इस क्लास को इनहेरिट करता हूँ, तो मुझे उम्मीद होती है कि चाइल्ड क्लास अपने टाइप के ऑब्जेक्ट बनाएगी, लेकिन किसी कारण से पैरेंट क्लास का ऑब्जेक्ट बनता है।
यहाँ एक सरल उदाहरण है:
```php
class ParentClass {
public static function create() {
return new self();
}
}
class ChildClass extends ParentClass {
// कोई ओवरराइडिंग नहीं
}
$obj = ChildClass::create();
// $obj — ParentClass है, ChildClass नहीं!
echo get_class($obj); // ParentClass
```
मैंने लेट स्टैटिक बाइंडिंग और `static` कीवर्ड के बारे में पढ़ा है, लेकिन पूरी तरह से समझ नहीं पाया कि यह कैसे काम करता है। `new self()` हमेशा पैरेंट क्लास को क्यों रेफर करता है?