簡體   English   中英

將變量傳遞給擴展的PHP類

[英]Pass variable to extended PHP class

我已經在PHP中使用OOP已經有一段時間了,但由於某些原因,我的腦部完全崩潰了,無法解決這里出了什么問題!

我有一個更復雜的類,但寫了一個更簡單的類來測試它,甚至這不起作用......

誰能告訴我我做錯了什么?

class test
{
    public $testvar;

    function __construct()
    {
       $this->testvar = 1;
    }
}

class test2 extends test
{
    function __construct()
    {
        echo $this->testvar;
    }
}

$test = new test;
$test2 = new test2;

我要做的就是將一個變量從父類傳遞給子類! 我發誓過去我剛用$ this-> varName來獲取擴展名中的$ varName

謝謝!

您必須從子類的構造函數中調用父類的構造函數。

在您的情況下,這意味着您的test2類將成為:

class test2 extends test
{
    function __construct()
    {
        parent::__construct();
        echo $this->testvar;
    }
}

有關更多信息,您可以查看手冊的頁面構造函數和析構函數 ,其中說明了您的問題:

注意: 如果子類定義構造函數,則不會隱式調用父構造函數 為了運行父構造函數,需要在子構造函數中調用parent::__construct()


你可以使用$this->varName :這不是問題; 考慮這段代碼:

class test {
    public $testvar = 2;
    function __construct() {
       $this->testvar = 1;
    }
}
class test2 extends test {
    function __construct() {
        var_dump($this->testvar);
    }
}
$test2 = new test2;

輸出是:

int 2

這是$testvar的“默認”值。

這意味着問題不在於您無法訪問該屬性:此處的問題僅在於未調用父類的構造函數。

你的test2類應該調用

parent::__construct()

在它的構造函數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM