已定义的子受保护属性的尝试父访问返回为未定义

时间:2014-02-04 19:31:29

标签: php class static

这是我做的一个模型,代表了我本来想要做的事情:

<?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文档中了解到,受保护的属性可以通过继承或父类访问,但我仍然遇到此错误。我错过了什么吗?有更好的方法吗?

提前致谢!

0 个答案:

没有答案