在PHP中,如何获取父类变量?
我的印象是子类继承父类的属性。但是,以下是类B中的输出null。。。有人能告诉我如何从父类访问属性吗在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
$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()”似乎是解决方案。