PHP での親クラス変数へのアクセス
オブジェクト指向プログラミングでは、子クラス内の親クラス変数にアクセスすることが困難になる場合があります。以下のコードを考えてみましょう。
<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>
parent::$bb を使用して $bb 変数にアクセスしようとすると、エラーが発生します。これは、変数が保護されており、保護された変数にはクラスとその子クラス内でのみアクセスできるためです。
解決策: $this->bb を使用する
To子クラスの $bb 変数に正しくアクセスするには、$this->bb を使用します。この構文は、親クラスから継承された変数を含む、現在のオブジェクトのインスタンス変数を参照します。
<code class="php">echo $this->bb;</code>
$bb 変数は継承され、プライベートではないため、現在のオブジェクトの一部であり、次のことができます。 $this キーワードを使用してアクセスできます。
追加情報
親クラスのメソッドの動作を変更する必要がある場合は、parent:: を使用します。たとえば、次のことを考えてみましょう。
<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>
ここで、parent:: は Airplane クラスからコンストラクターを拡張して、$navigator 変数を追加します。これにより、必要な機能を提供しながら DRY 原則に従うことができます。
以上がPHP で親クラス変数にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。