我们说我有这个PHP脚本:
<?php
class Aaa
{
protected $var = null;
public function performSomething()
{
$this->var = 'Now we have a string, not more null value';
$bbb = New Bbb();
$bbb->powerOnYou();
}
}
class Bbb extends Aaa
{
public function powerOnYou()
{
var_dump($this->var);
// this dump "NULL" and not string
}
}
$aaa = New Aaa();
$aaa->performSomething();
你怎么能注意到这个课将&#34; var_dump&#34;每次都是NULL,而不是字符串。
当然我需要输出字符串。
这也是沙箱链接:http://sandbox.onlinephpfunctions.com/code/6cd253e1945e78f114749be55ffc5f88ab44dd42
谢谢
答案 0 :(得分:1)
请注意,$var
是一个实例变量,而不是类变量。这意味着,您的类的每个实例都有自己的副本。
您创建了一个类Aaa
的实例,并将$aaa
的{{1}}副本设置为$var
。但是,在'Now we have a string, not more null value'
内,您可以创建一个全新的类performSomething()
实例,该实例具有自己的Bbb
副本。由于您未设置$var
的{{1}},因此在输出时为$bbb
。
查看此代码并尝试理解它;我没有机会测试它,因为我现在在工作,但它应该给你你想要的输出:
$var