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