How to call super in PHP?

I have a classB which extends classA.

In both classA and classB I define the method fooBar().

In fooBar() of classB I want to call fooBar() of classA at the beginning.

Just the way I'm used to, from Objective-C. Is that possible in PHP? And if so, how?


Solution 1:

parent::fooBar();

Straight from the manual:

The ... double colon, is a token that allows access to ... overridden properties or methods of a class.

...

Example #3 Calling a parent's method

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>

Solution 2:

Just a quick note because this doesn't come up as easy on Google searches, and this is well documented in php docs if you can find it. If you have a subclass that needs to call the superclass's constructor, you can call it with:

parent::__construct(); // since PHP5

An example would be if the super class has some arguments in it's constructor and it's implementing classes needs to call that:

class Foo {

  public function __construct($lol, $cat) {
    // Do stuff specific for Foo
  }

}

class Bar extends Foo {

  public function __construct()(
    parent::__construct("lol", "cat");
    // Do stuff specific for Bar
  }

}

You can find a more motivating example here.