72 votes

Comment appeler super en PHP ?

Tengo un classB qui prolonge classA .

Dans les deux cas classA y classB Je définis la méthode fooBar() .

Sur fooBar() de classB Je veux appeler fooBar() de classA au début.

Comme j'en ai l'habitude, à partir d'Objective-C. Est-ce possible en PHP ? Et si oui, comment ?

98voto

just somebody Points 9534
parent::fooBar();

En direct de la manuel :

Le double point, est un jeton qui permet d'accéder aux propriétés ou aux méthodes surchargées d'une classe.

...

Exemple n°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();
?>

76voto

Spoike Points 32082

Juste une note rapide parce que cela n'apparaît pas aussi facilement sur les recherches Google, et c'est bien documenté dans les docs php. si vous pouvez le trouver . Si vous avez une sous-classe qui doit appeler le constructeur de la super-classe, vous pouvez l'appeler avec :

parent::__construct(); // since PHP5

Par exemple, si la super classe a des arguments dans son constructeur et que les classes qui la mettent en œuvre doivent l'appeler :

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 aquí .

0 votes

Le lien pour l'exemple motivant a disparu

0 votes

@Jonathan J'ai mis à jour le lien pour rechercher l'article sur la machine Wayback.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X