PHP OOP:属性问题和扩展类

时间:2015-05-14 13:17:01

标签: php oop

我们说我有这个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

谢谢

1 个答案:

答案 0 :(得分:1)

请注意,$var是一个实例变量,而不是类变量。这意味着,您的类的每个实例都有自己的副本。

您创建了一个类Aaa的实例,并将$aaa的{​​{1}}副本设置为$var。但是,在'Now we have a string, not more null value'内,您可以创建一个全新的类performSomething()实例,该实例具有自己的Bbb副本。由于您未设置$var的{​​{1}},因此在输出时为$bbb

查看此代码并尝试理解它;我没有机会测试它,因为我现在在工作,但它应该给你你想要的输出:

$var