在PHP中,如何获取父类变量?

在PHP中,如何获取父类变量?,php,class,variables,object,Php,Class,Variables,Object,我的印象是子类继承父类的属性。但是,以下是类B中的输出null。。。有人能告诉我如何从父类访问属性吗 $aClass = new A(); $aClass->init(); class A { function init() { $this->something = 'thing'; echo $this->something; // thing $bClass = new B(); $bCl

我的印象是子类继承父类的属性。但是,以下是类B中的输出null。。。有人能告诉我如何从父类访问属性吗

$aClass = new A();
$aClass->init();

class A {

    function init() 
    {
        $this->something = 'thing';
        echo $this->something; // thing
        $bClass = new B();
        $bClass->init();
    }

}

class B extends A {

    function init() 
    {
        echo $this->something; // null - why isn't it "thing"?
    }
}

您定义的第二个类应该是
类B扩展A
,而不是
类A扩展B
,我们使用以下语法访问PHP中的父类成员:

parent::$variableName


parent::methodName(arg,list)
您的代码中有几个错误。我已经改正了。以下脚本应按预期工作。我希望代码注释对您有所帮助:

class A {

    // even if it is not required you should declare class members
    protected $something;

    function init() 
    {
        $this->something = 'thing';
        echo 'A::init(): ' . $this->something; // thing
    }

}

// B extends A, not A extends B
class B extends A {

    function init() 
    {
        // call parent method to initialize $something
        // otherwise init() would just being overwritten
        parent::init();
        echo 'B::init() ' . $this->something; // "thing"
    }
}


// use class after(!) definition
$aClass = new B(); // initialize an instance of B (not A)
$aClass->init();

您已经定义了两次类A,而类B根本没有定义。。。你确定这个代码正确吗?你的意思是
B类扩展了A
?对不起,这是一个输入错误,我更正了…即使那样也不是解决办法。他会重写init()方法,这样父类中的方法就永远不会被调用。他必须在类B的
init
函数中调用
parent::init()
。@xbonez-调用init时,我只能访问该函数中定义的变量吗?这将耗尽内存,因为B将被实例化infinitively@dev-空居住者谢谢你的提示!我还没有仔细研究过init函数和this@hek2mgl-谢谢你的密码。我认为调用“parent::init()”似乎是解决方案。