PHP继承了数组属性

时间:2010-01-21 10:52:03

标签: php inheritance

我在PHP 5.2.9中有一个类层次结构。

基类有一个受保护的属性,它是一个关联数组。

子类可以向数组中添加一些元素。

子类在单独的文件(插件)中声明,这些文件将由多个开发人员创建和添加。

将子元素添加到子类中的属性的最佳方法是什么,以便声明一个新子项尽可能简单?

<?php
        class A {
                protected $myproperty = array (
                        'A1' => 1,
                        'A2' => 2
                );

                function myprint()
                {
                        print_r($this->myproperty);
                }
        };

        class B extends A {
                // add 'B1', 'B2' to myproperty
        };

        class C extends B {
                // add 'C1', 'C2' to myproperty
        };

        $c = new C();
        $c->myprint();
        // The line above should print A1, A2, B1, B2, C1, C2
?>

理想情况下,我希望为开发人员创建简单的声明变量或私有属性,而无需复制任何代码。

1 个答案:

答案 0 :(得分:3)

使用继承类的constructors,对于B类,它会变成这样:

class B extends A {
    function __construct() {
        parent::__construct();                // Call constructor of parent class
        array_push($myproperty, "B1", "B2");  // Add our properties
    }
}

同样适用于C类。

如果你有很多继承的类,或者想要提供尽可能多的支持,你可以将这些代码放入某个函数中。所以其他开发人员只需要在他们的构造函数中调用这个函数来“注册”他们的孩子。