这是我做的一个模型,代表了我本来想要做的事情:
<?php
abstract class parentClass
{
protected $classProp;
static function showChildProps()
{
$childObj1 = new childClass1();
$childObj2 = new childClass2();
var_dump($childObj1);
var_dump($childObj2);
echo $childObj1->$classProp;
echo $childObj2->$classProp;
}
}
class childClass1 extends parentClass
{
public function __construct()
{
$this->classProp = 'Child Class 1';
}
}
class childClass2 extends parentClass
{
public function __construct()
{
$this->classProp = 'Child Class 2';
}
}
parentClass::showChildProps();
?>
这是我正在尝试做的简化版本,但上面的代码会产生确切的结果(var_dump
表示属性已定义)。
这个概念是我有很多扩展父类的类(我可以模拟一些代码来说明如果它有用的话我是如何实现的),并且我想显示那些子类的列表(这个部分在实际代码中是有用的)以及为这些类中的每一个分配给特定公共变量(在这种情况下为$classProp
)的数据。
如果运行提供的代码,您将看到var_dump
表示确实已定义$classProp
,但是,当我尝试从父级访问该属性时,我得到PHP注意:未定义变量
我从PHP文档中了解到,受保护的属性可以通过继承或父类访问,但我仍然遇到此错误。我错过了什么吗?有更好的方法吗?
提前致谢!