How to call super in PHP?

PhpOop

Php Problem Overview


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?

Php Solutions


Solution 1 - Php

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 >
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 - Php

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionopenfrogView Question on Stackoverflow
Solution 1 - Phpjust somebodyView Answer on Stackoverflow
Solution 2 - PhpSpoikeView Answer on Stackoverflow