目次
PHP での親クラス変数へのアクセス
ホームページ バックエンド開発 PHPチュートリアル PHP サブクラスで保護された親クラス変数にアクセスするにはどうすればよいですか?

PHP サブクラスで保護された親クラス変数にアクセスするにはどうすればよいですか?

Oct 23, 2024 am 12:44 AM

How to Access Protected Parent Class Variables in PHP Subclasses?

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

オブジェクト指向プログラミングでは、子クラスは親クラスのプロパティとメソッドを継承します。ただし、子クラス内で親クラスの変数に直接アクセスすると、問題が発生する場合があります。

クラス B がクラス A を拡張する次のコード スニペットを考えてみましょう。

<code class="php">class A {
    private $aa;
    protected $bb = 'parent bb';
    function __construct($arg) {}
    private function parentmethod($arg2) {}
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$bb; //Fatal error: Undefined class constant 'bb' 
    }
}

$test = new B($some);
$test-&gt;childfunction();</code>
ログイン後にコピー

質問:

なぜこの行はparent::$bb;をエコーするのですか?致命的なエラーが発生しますか?子クラスの親変数 $bb にアクセスするにはどうすればよいですか?

答え:

$bb はクラス A の保護されたプロパティであり、保護されているため、エラーが発生します。プロパティには、parent:: 構文を使用してクラスまたはサブクラスの外部から直接アクセスすることはできません。代わりに、次の構文を使用して $bb にアクセスできます:

<code class="php">echo $this-&gt;bb;</code>
ログイン後にコピー

説明:

$this キーワードは現在のオブジェクトを参照します。 $bb はクラス B によって継承され、現在のオブジェクトの一部になるため、$this を使用してアクセスできます。この構文は、子クラスのプロパティであるかのように、継承された変数に効果的にアクセスします。

parent::

parent:: 構文は次の目的で使用されます。子クラス内から親クラスのメソッドまたはプロパティにアクセスします。これは通常、親クラスのメソッドをオーバーライドする場合、または追加の機能をメソッドに追加する場合に使用されます。

たとえば、次のコードを考えてみましょう。

<code class="php">class Airplane {
    private $pilot;
    public function __construct( $pilot ) {
        $this-&gt;pilot = $pilot;
    }
}

class Bomber extends Airplane {
    private $navigator;
    public function __construct( $pilot, $navigator ) {
        $this-&gt;navigator = $navigator;
        parent::__construct( $pilot ); // Calls the parent constructor
    }
}</code>
ログイン後にコピー

この場合、 Bomber クラスの __construct() メソッドは、親の __construct() メソッドをオーバーライドしますが、パイロット プロパティを初期化するために引き続きそれを利用します。

以上がPHP サブクラスで保護された親クラス変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP状況調査の発表

See all articles