Heim  >  Artikel  >  Backend-Entwicklung  >  Probleme mit der Vererbung und verzögerter statischer Bindung in PHP

Probleme mit der Vererbung und verzögerter statischer Bindung in PHP

WBOY
WBOYOriginal
2016-08-08 09:26:46783Durchsuche

Ein seit langem bestehendes Problem mit dem Vererbungsmodell von PHP besteht darin, dass es schwierig ist, den Endzustand einer erweiterten Klasse in der übergeordneten Klasse zu referenzieren. Dies würde vor PHP5.3 passieren

1 php
2 3 Klasse ParentBase {
4 5 statisch $property = ' Übergeordneter Wert';
6 7 öffentlich statisch Funktion render() {
8 9 zurückkehrenselbst::$property;
10 11 }
12 13 }
14 15 Klasse Descendant erweitert ParentBase {
16 17 statisch $property = 'Absteigender Wert';
18 19 }
20 21 Echo Nachkomme::render();
22

In diesem Beispiel wird die render()-Methode verwendet. Das Schlüsselwort self bezieht sich darauf zur ParentBase-Klasse und nicht zur Descendant-Klasse. Es gibt keine Möglichkeit, auf den Endwert von $property in der Methode ParentBase::render() zuzugreifen. Weil das Schlüsselwort self seinen Gültigkeitsbereich zur Kompilierungszeit und nicht zur Laufzeit bestimmt. Um dieses Problem zu lösen, hat PHP5.3 dieses Problem behoben und die Rolle des statischen Schlüsselworts neu angegeben. Die render()-Methode muss in der Unterklasse neu geschrieben werden.

Durch die Einführung der verzögerten statischen Bindungsfunktion können Sie das Schlüsselwort „statischer Bereich“ verwenden, um auf die Eigenschaften einer Klasse oder den Endwert einer Methode zuzugreifen, wie im Code gezeigt.

1 php
2 3 Klasse ParentBase {
4 5 statisch $property = 'Parent Value';
6 7 öffentlich statisch Funktion render() {
8 9 zurück statisch::$property;
10 11 }
12 13 }
14 15 Klasse Descendant erweitert ParentBase {
16 17 statisch $property = 'Nachkommenwert';
18 19 }
20 21 Echo Nachkomme ::render();
22


Durch die Verwendung eines statischen Bereichs können Sie PHP zwingen, den Wert zu finden aller Immobilien in . Zusätzlich zu diesem verzögerten Bindungsverhalten

Das Obige hat die Probleme der Vererbung und der verzögerten statischen Bindung in PHP vorgestellt, einschließlich ihrer Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
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