Heim  >  Artikel  >  Backend-Entwicklung  >  Zugriff auf geschützte übergeordnete Klassenvariablen in PHP: Warum „$this->bb' anstelle von „parent::bb' verwenden?

Zugriff auf geschützte übergeordnete Klassenvariablen in PHP: Warum „$this->bb' anstelle von „parent::bb' verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 21:20:29416Durchsuche

Accessing Protected Parent Class Variables in PHP: Why Use `$this->bb` Über `parent::bb`?bb` Über `parent::bb`?" />

Zugriff auf übergeordnete Klassenvariablen in PHP

Der bereitgestellte Code zeigt ein Problem, bei dem eine untergeordnete Klasse nicht auf die geschützte Variable $bb zugreifen kann, die von ihrer übergeordneten Klasse geerbt wurde . Um dieses Problem zu lösen, kann mit der Syntax $this->bb auf die Variable zugegriffen werden.

<code class="php">class A {
    private $aa;
    protected $bb = 'parent bb';

    function __construct($arg) {
       //do something..
    }

    private function parentmethod($arg2) {
       //do something..
    }
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo $this->bb; // Outputs 'parent bb'
    }
}

$test = new B($some);
$test->childfunction();</code>

Die Verwendung von $this->bb impliziert, dass die geerbte Variable nun Teil des aktuellen Objekts ist und dies auch sein kann Auf sie kann wie auf jede andere Instanzvariable zugegriffen werden.

Zusätzlicher Hinweis:

Während die Verwendung von $this->bb das unmittelbare Problem löst, ist es wichtig, den Unterschied zwischen $this -> und parent:: beim Zugriff auf geerbte Variablen und Methoden.

$this-> bezieht sich auf das aktuelle Objekt, während parent:: sich auf die übergeordnete Klasse bezieht. $this-> kann verwendet werden, um direkt auf geerbte Variablen zuzugreifen, während parent:: verwendet wird, um Methoden der übergeordneten Klasse aufzurufen oder auf statische Variablen der übergeordneten Klasse zuzugreifen.

Zum Beispiel, wenn Sie eine Methode der übergeordneten Klasse überschreiben möchten, während Sie weiterhin auf das Original zugreifen möchten Methode aus der übergeordneten Klasse können Sie die folgende Syntax verwenden:

<code class="php">class Child extends Parent {
    function myMethod() {
        parent::myMethod(); // Calls the parent class's myMethod()
    }
}</code>

Das obige ist der detaillierte Inhalt vonZugriff auf geschützte übergeordnete Klassenvariablen in PHP: Warum „$this->bb' anstelle von „parent::bb' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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