我在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
?>
理想情况下,我希望为开发人员创建简单的声明变量或私有属性,而无需复制任何代码。
答案 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类。
如果你有很多继承的类,或者想要提供尽可能多的支持,你可以将这些代码放入某个函数中。所以其他开发人员只需要在他们的构造函数中调用这个函数来“注册”他们的孩子。