84 Stimmen

Wie ruft man super in PHP auf?

Ich habe eine classB die die classA .

In beiden classA et classB Ich definiere die Methode fooBar() .

Sur fooBar() de classB Ich möchte anrufen fooBar() de classA am Anfang.

Genau so, wie ich es von Objective-C gewohnt bin. Ist das in PHP möglich? Und wenn ja, wie?

107voto

just somebody Punkte 17584
parent::fooBar();

Direkt aus dem Handbuch :

Der ... Doppelpunkt, ist ein Token, das den Zugriff auf ... überschriebene Eigenschaften oder Methoden einer Klasse ermöglicht.

...

Beispiel #3 Aufruf der Methode eines Elternteils

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

91voto

Spoike Punkte 115938

Nur eine kurze Anmerkung, weil dies nicht so einfach auf Google-Suchen kommen, und dies ist gut dokumentiert in php docs wenn Sie es finden können . Wenn Sie eine Unterklasse haben, die den Konstruktor der Oberklasse aufrufen muss, können Sie ihn mit aufrufen:

parent::__construct(); // since PHP5

Ein Beispiel wäre, wenn die Superklasse einige Argumente in ihrem Konstruktor hat und ihre implementierenden Klassen diesen aufrufen müssen:

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
  }

}

Ein motivierenderes Beispiel finden Sie unter aquí .

0 Stimmen

Link für motivierendes Beispiel ist verschwunden

1 Stimmen

@Jonathan Ich habe den Link aktualisiert, um den Artikel in der Wayback-Maschine nachzuschlagen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X