Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengakses Pembolehubah Kelas Induk Dilindungi dalam Subkelas PHP?

Bagaimana untuk Mengakses Pembolehubah Kelas Induk Dilindungi dalam Subkelas PHP?

Patricia Arquette
Patricia Arquetteasal
2024-10-23 00:44:03423semak imbas

How to Access Protected Parent Class Variables in PHP Subclasses?

Mengakses Pembolehubah Kelas Induk dalam PHP

Dalam pengaturcaraan berorientasikan objek, kelas anak mewarisi sifat dan kaedah kelas induknya. Walau bagaimanapun, mengakses pembolehubah kelas induk secara langsung dalam kelas anak kadangkala boleh menimbulkan cabaran.

Pertimbangkan coretan kod berikut di mana kelas B melanjutkan kelas 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->childfunction();</code>

Soalan:

Mengapa baris itu bergema induk::$bb; mengakibatkan kesilapan yang membawa maut? Bagaimanakah kita boleh mengakses pembolehubah induk $bb dalam kelas anak?

Jawapan:

Ralat berlaku kerana $bb ialah harta yang dilindungi kelas A dan dilindungi sifat tidak boleh diakses terus dari luar kelas atau subkelas menggunakan sintaks induk::. Sebaliknya, kita boleh mengakses $bb menggunakan sintaks berikut:

<code class="php">echo $this->bb;</code>

Penjelasan:

Kata kunci $this merujuk kepada objek semasa. Memandangkan $bb diwarisi oleh kelas B dan menjadi sebahagian daripada objek semasa, kita boleh mengaksesnya menggunakan $this. Sintaks ini secara berkesan mengakses pembolehubah yang diwarisi seolah-olah ia adalah harta kelas anak.

Maklumat Tambahan tentang induk::

Induk:: sintaks digunakan untuk kaedah akses atau sifat kelas induk dari dalam kelas anak. Ia biasanya digunakan apabila anda ingin mengatasi kaedah daripada kelas induk atau menambah kefungsian tambahan padanya.

Sebagai contoh, pertimbangkan kod berikut:

<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 ); // Calls the parent constructor
    }
}</code>

Dalam kes ini, Kaedah __construct() kelas Bomber mengatasi kaedah __construct() induk, tetapi masih menggunakannya untuk memulakan sifat perintis.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Kelas Induk Dilindungi dalam Subkelas PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn