ホームページ  >  記事  >  バックエンド開発  >  PHP で保護された親クラス変数にアクセスする: なぜ `parent::bb` ではなく `$this->bb` を使用するのでしょうか?

PHP で保護された親クラス変数にアクセスする: なぜ `parent::bb` ではなく `$this->bb` を使用するのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-22 21:20:29333ブラウズ

Accessing Protected Parent Class Variables in PHP: Why Use `$this->bb` `parent::bb` を超えますか?bb` `parent::bb` を超えますか?" />

PHP での親クラス変数へのアクセス

提供されたコードは、子クラスが親クラスから継承した保護変数 $bb にアクセスできない問題を示しています。 。これを解決するには、構文 $this->bb を使用して変数にアクセスできます。

<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>

$this->bb を使用すると、継承された変数が現在のオブジェクトの一部になり、次のことができることになります。他のインスタンス変数と同様にアクセスできます。

追加の注意:

$this->bb を使用すると当面の問題は解決されますが、$this との違いを理解することが重要です。 ->およびparent:: 継承された変数とメソッドにアクセスするとき。

$this->は現在のオブジェクトを参照し、parent:: は親クラスを参照します。 $this->は継承された変数に直接アクセスするために使用できますが、parent:: は親クラスのメソッドを呼び出すか、親クラスの静的変数にアクセスするために使用されます。

たとえば、元のクラスのメソッドにアクセスしながら、親クラスのメソッドをオーバーライドしたい場合親クラスからメソッドを取得するには、次の構文を使用できます:

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

以上がPHP で保護された親クラス変数にアクセスする: なぜ `parent::bb` ではなく `$this->bb` を使用するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。