首頁  >  文章  >  後端開發  >  在 PHP 中存取受保護的父類變數:為什麼使用 `$this->bb` 而不是 `parent::bb`?

在 PHP 中存取受保護的父類變數:為什麼使用 `$this->bb` 而不是 `parent::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 意味著繼承的變數現在是當前物件的一部分,並且可以像任何其他實例變數一樣存取。

附加說明:

雖然使用$t​​his->bb 解決了眼前的問題,但了解$this 和$this 之間的區別很重要->和parent:: 存取繼承的變數和方法時。

$this->指的是當前對象,而parent::指的是父類。 $這個->可用於直接存取繼承的變量,而parent::用於呼叫父類別方法或存取父類別靜態變數。

例如,如果您想要重寫父類別方法,同時仍存取原始類別來自父類別的方法,您可以使用以下語法:

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

以上是在 PHP 中存取受保護的父類變數:為什麼使用 `$this->bb` 而不是 `parent::bb`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn