oop - return the extending class instance from an abstract method in PHP -
i have class extends abstract class. php allows access instance of extending class within abstract methods?
something like:
abstract class foo{ protected function bar(){ return $this; } } class bar extends foo{ public function foo(){ // should hold bar instance , not foo's $barclassinstance = $this->bar(); } } where $barclassinstance hold bar class instance, instead of abstract foo instance?
trying out worth thousand stackoverflow questions
<?php abstract class foo{ protected function bar(){ echo 'foo', php_eol; var_dump($this); return $this; } } class bar extends foo{ public function foo(){ echo 'bar', php_eol; var_dump($this); // should hold bar instance , not foo's $barclassinstance = $this->bar(); var_dump($barclassinstance); } } $bar = new bar(); $bar->foo(); output https://3v4l.org/b73bt
bar object(bar)#1 (0) { } foo object(bar)#1 (0) { } object(bar)#1 (0) { } $this reference instance regardless of subclass instance of. there no foo instance because foo cannot instantiated, abstract. if foo concrete class, wouldn't have foo $this , bar $this in same object. have $this pointing specific subclass created.
Comments
Post a Comment