[英]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.