Wie greife ich auf geschützte übergeordnete Klassenvariablen in PHP-Unterklassen zu?

Patricia Arquette
Freigeben: 2024-10-23 00:44:03
Original
287 Leute haben es durchsucht

How to Access Protected Parent Class Variables in PHP Subclasses?

Zugriff auf übergeordnete Klassenvariablen in PHP

Bei der objektorientierten Programmierung erben untergeordnete Klassen die Eigenschaften und Methoden ihrer übergeordneten Klassen. Allerdings kann der Zugriff auf übergeordnete Klassenvariablen direkt innerhalb der untergeordneten Klasse manchmal eine Herausforderung darstellen.

Bedenken Sie den folgenden Codeausschnitt, in dem Klasse B Klasse A erweitert:

<code class="php">class A {
    private $aa;
    protected $bb = 'parent bb';
    function __construct($arg) {}
    private function parentmethod($arg2) {}
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$bb; //Fatal error: Undefined class constant 'bb' 
    }
}

$test = new B($some);
$test->childfunction();</code>
Nach dem Login kopieren

Frage:

Warum gibt die Zeile ein Echo parent::$bb; zu einem schwerwiegenden Fehler führen? Wie können wir auf die übergeordnete Variable $bb in der untergeordneten Klasse zugreifen?

Antwort:

Der Fehler tritt auf, weil $bb eine geschützte Eigenschaft der Klasse A und geschützt ist Auf Eigenschaften kann nicht direkt von außerhalb der Klasse oder Unterklassen mithilfe der parent::-Syntax zugegriffen werden. Stattdessen können wir mit der folgenden Syntax auf $bb zugreifen:

<code class="php">echo $this->bb;</code>
Nach dem Login kopieren

Erklärung:

Das Schlüsselwort $this bezieht sich auf das aktuelle Objekt. Da $bb von Klasse B geerbt wird und Teil des aktuellen Objekts wird, können wir mit $this darauf zugreifen. Diese Syntax greift effektiv auf die geerbte Variable zu, als wäre sie eine Eigenschaft der untergeordneten Klasse.

Zusätzliche Informationen zu parent::

Die parent::-Syntax ist gewohnt Greifen Sie innerhalb der untergeordneten Klasse auf Methoden oder Eigenschaften der übergeordneten Klasse zu. Es wird normalerweise verwendet, wenn Sie eine Methode aus der übergeordneten Klasse überschreiben oder ihr zusätzliche Funktionalität hinzufügen möchten.

Bedenken Sie beispielsweise den folgenden Code:

<code class="php">class Airplane {
    private $pilot;
    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}

class Bomber extends Airplane {
    private $navigator;
    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;
        parent::__construct( $pilot ); // Calls the parent constructor
    }
}</code>
Nach dem Login kopieren

In diesem Fall ist die Die __construct()-Methode der Bomber-Klasse überschreibt die __construct()-Methode der übergeordneten Klasse, verwendet sie jedoch weiterhin, um die Piloteigenschaft zu initialisieren.

Das obige ist der detaillierte Inhalt vonWie greife ich auf geschützte übergeordnete Klassenvariablen in PHP-Unterklassen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!