Php virtuelle Methodenimplementierung: Erstellen Sie zuerst eine PHP-Beispieldatei und übergeben Sie dann „
Empfohlen: „PHP-Video-Tutorial“
Teilen der Implementierungsmethode virtueller Funktionen in PHP5
Personen, die C++ studiert haben, sollten wissen, dass es in C++ ein Konzept virtueller Funktionen gibt. Wie implementiert man diese virtuelle Funktion in PHP5?
Bitte schauen Sie sich den folgenden Code an:
Der Code lautet wie folgt:
<?php class A { public function x() { echo "A::x() was called.\n"; } public function y() { self::x(); echo "A::y() was called.\n"; } public function z() { $this->x(); echo "A::z() was called.\n"; } } class B extends A { public function x() { echo "B::x() was called.\n"; } } $b = new B(); $b->y(); echo "--\n"; $b->z(); ?>
In diesem Beispiel ruft A::y() A::x() auf und B::x() überschreibt A:: x( ), sollte B::y() dann beim Aufruf von B::y() A::x() oder B::x() aufrufen? Wenn in C++ A::x() nicht als virtuelle Funktion definiert ist, dann ruft B::y() (d. h. A::y()) A::x() auf, und wenn A:: x() wird mit dem Schlüsselwort virtual als virtuelle Funktion definiert, dann ruft B::y() B::x() auf.
In PHP5 wird die Funktionalität virtueller Funktionen jedoch durch die Schlüsselwörter self und $this implementiert. Wenn A::y() in der übergeordneten Klasse A::x() mit self::x() aufruft, dann gilt in der Unterklasse, unabhängig davon, ob A::x() überschrieben wird oder nicht, A::y( ) ruft A::x(); auf und wenn A::y() in der übergeordneten Klasse A::x() mit $this->x() aufruft, dann wenn A::y() in der Unterklasse :: x() wird von B::x() überschrieben, A::y() ruft B::x() auf.
Das laufende Ergebnis des obigen Beispiels lautet wie folgt:
A::x() was called. A::y() was called. -- B::x() was called. A::z() was called. virtual-function.php
Der Code lautet wie folgt:
<?php class ParentClass { static public function say( $str ) { static::do_print( $str ); } static public function do_print( $str ) { echo "<p>Parent says $str</p>"; } } class ChildClass extends ParentClass { static public function do_print( $str ) { echo "<p>Child says $str</p>"; } } class AnotherChildClass extends ParentClass { static public function do_print( $str ) { echo "<p>AnotherChild says $str</p>"; } } echo phpversion(); $a=new ChildClass(); $a->say( 'Hello' ); $b=new AnotherChildClass(); $b->say( 'Hello' );
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine virtuelle Methode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!