Zugriff auf übergeordnete Klassenvariablen in PHP
Bei der objektorientierten Programmierung kann der Zugriff auf die übergeordnete Klassenvariable innerhalb einer untergeordneten Klasse eine Herausforderung darstellen. Betrachten Sie den folgenden Code:
<code class="php">class A { private $aa; protected $bb = 'parent bb'; // ... } class B extends A { function childfunction() { echo parent::$bb; // Fatal error: Undefined class constant 'bb' } } </code>
Der Versuch, mit parent::$bb auf die Variable $bb zuzugreifen, führt zu einem Fehler. Dies liegt daran, dass die Variable geschützt ist und auf geschützte Variablen nur innerhalb der Klasse und ihrer untergeordneten Klassen zugegriffen werden kann.
Lösung: Verwendung von $this->bb
To Um korrekt auf die Variable $bb in der untergeordneten Klasse zuzugreifen, verwenden Sie $this->bb. Diese Syntax bezieht sich auf die Instanzvariable des aktuellen Objekts, die die von der übergeordneten Klasse geerbten Variablen enthält.
<code class="php">echo $this->bb;</code>
Die Variable $bb wird geerbt und ist nicht privat, daher ist sie Teil des aktuellen Objekts und kann Der Zugriff erfolgt über das Schlüsselwort $this.
Zusätzliche Informationen
In Situationen, in denen Sie das Verhalten einer Methode der übergeordneten Klasse ändern müssen, verwenden Sie parent::. Betrachten Sie beispielsweise Folgendes:
<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 ); // Assign to this->pilot } }</code>
Hier erweitert parent:: den Konstruktor der Airplane-Klasse, um die Variable $navigator hinzuzufügen. Dadurch können Sie dem DRY-Prinzip folgen und gleichzeitig die gewünschte Funktionalität bereitstellen.
Das obige ist der detaillierte Inhalt vonSo greifen Sie in PHP auf übergeordnete Klassenvariablen zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!