Heim > Backend-Entwicklung > PHP-Problem > So implementieren Sie eine virtuelle Methode in PHP

So implementieren Sie eine virtuelle Methode in PHP

藏色散人
Freigeben: 2023-03-06 14:48:02
Original
1936 Leute haben es durchsucht

Php virtuelle Methodenimplementierung: Erstellen Sie zuerst eine PHP-Beispieldatei und übergeben Sie dann „

So implementieren Sie eine virtuelle Methode in PHP

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(); 
?>
Nach dem Login kopieren

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
Nach dem Login kopieren

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( &#39;Hello&#39; ); 
$b=new AnotherChildClass(); 
$b->say( &#39;Hello&#39; );
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage