web-dev-qa-db-fra.com

Comment appeler super en PHP?

J'ai un classB qui étend classA. Dans classB je définis une méthode fooBar() qui est également définie dans classA. Dans fooBar() de classB je veux appeler fooBar() de classA au début. Comme d'habitude, d'Objective-C. Est-ce possible en PHP? Et si oui, comment?

56
openfrog
parent::fooBar();

Directement depuis le manuel :

Le ... double colon, est un jeton qui permet d'accéder aux ... propriétés ou méthodes redéfinies d'une classe.

...

Exemple # 3 Appel de la méthode d'un parent

<?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();
?>
84
just somebody

Juste une note rapide car cela ne se présente pas aussi facilement dans les recherches Google, et cela est bien documenté dans les documents php si vous pouvez le trouver . Si vous avez une sous-classe qui doit appeler le constructeur de la superclasse, vous pouvez l'appeler avec:

parent::__construct(); // since PHP5

Un exemple serait si la super classe a des arguments dans son constructeur et qu'elle implémente des classes doit appeler cela:

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
  }

}

Vous pouvez trouver un exemple plus motivant ici .

65
Spoike