Bagaimana untuk Mengakses Pembolehubah Kelas Induk Dilindungi dalam Subkelas PHP?

Patricia Arquette
Lepaskan: 2024-10-23 00:44:03
asal
286 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!