Search code examples
phpclassparentextend

get parent extends class in php


i have the oop php code:

class a {
    // with properties and functions
}

class b extends a {
    public function test() {
        echo __CLASS__; // this is b
        // parent::__CLASS__ // error
    }
}

$b = new b();
$b->test();

I have a few parent class (normal and abstract) and many child classes. The child classes extend the parent classes. So when I instantiate the child at some point I need to find out what parent I called.

for example the function b::test() will return a

How can I get (from my code) the class a from my class b?

thanks


Solution

  • Your code suggested you used parent, which in fact is what you need. The issue lies with the magic __CLASS__ variable.

    The documentation states:

    As of PHP 5 this constant returns the class name as it was declared.

    Which is what we need, but as noted in this comment on php.net:

    claude noted that __CLASS__ always contains the class that it is called in, if you would rather have the class that called the method use get_class($this) instead. However this only works with instances, not when called statically.

    If you only are in need of the parent class, theres a function for that aswell. That one is called get_parent_class