- Notifications
You must be signed in to change notification settings - Fork8k
Closed
Description
Description
The following code:
<?phpclass A{protectedstatic$instance =null;publicstaticfunctiongetInstance(...$args) {if(!isset(self::$instance)){self::$instance =newstatic(...$args); }returnself::$instance; }publicfunctiongetB() {return B::class::getInstance(); }}class Bextends A{protectedstatic$instance =null;publicstaticfunctiongetInstance(...$args) {if(!isset(self::$instance)){self::$instance =newstatic(...$args); }returnself::$instance; }}var_dump(A::getInstance()->getB());// B
Resulted in this output:
<?phptrait Singleton{ protected static $instance = null; public static function getInstance(...$args) { if(!isset(self::$instance)){ self::$instance = new static(...$args); } return self::$instance; }}class A{ use Singleton; public function getB() { return B::class::getInstance(); }}class B extends A{ use Singleton;}var_dump(A::getInstance()->getB()); // A
But I expected this output instead:
var_dump(A::getInstance()->getB()); // B
PHP Version
PHP 8.2.3
Operating System
mac 13.0.1