PHP での親クラス変数へのアクセス
継承を使用する場合、親クラスから変数にアクセスする必要があります。この例では、クラス B はクラス A を拡張し、親クラスで保護されたものとして定義されている変数 $bb をエコーしようとします。ただし、$bb が未定義のクラス定数であることを示すエラーがスローされます。
子クラスの親変数を表示するには、次の構文を使用します。
<code class="php">echo $this->bb;</code>
プライベート変数とは異なります。 、クラスの外部からはアクセスできませんが、保護された変数は子クラス内でアクセスできます。したがって、$bb には、子クラス内の $this キーワードを介して直接アクセスできます。 'parent bb' の期待された結果は期待どおりに出力されます。
追加情報:parent:: の使用法
parent:: 構文は、必要な場合に使用されます。親クラスからメソッドの機能を拡張します。質問に示されている例とは異なり、子クラスが単に親変数にアクセスする場合、parent:: を使用すると、継承されたメソッドの動作を変更または拡張できます。
たとえば、親クラス Airplane にプライベート変数 $pilot と、パイロットを $pilot 変数に割り当てるコンストラクター:
<code class="php">class Airplane { private $pilot; public function __construct($pilot) { $this->pilot = $pilot; } }</code>
そして、Airplane を拡張してナビゲーター変数と拡張コンストラクターを追加する Bomber クラスを作成したいとします:
<code class="php">class Bomber extends Airplane { private $navigator; public function __construct($pilot, $navigator) { $this->navigator = $navigator; parent::__construct($pilot); // Assigns $pilot to $this->pilot } }</code>
parent::__construct($pilot) を使用すると、子クラスから親クラスのコンストラクターを呼び出し、ナビゲーター機能を追加しながら、パイロット引数を子クラスの $pilot 変数に割り当てることができます。これにより、親クラスの既存のコードを再利用し、それを子クラスでカスタマイズし、DRY (Don'tRepeat Yourself) 原則に準拠することができます。
以上がPHP で子クラスの親クラス変数にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。