如下所示,我有一个超类(Article)和两个子类。 我希望每个子类都有一个静态数组,用于保存其所有对象。
abstract class Article
{
public static $articles = array(); // Variable for storing all the objects of each sub-class.
public function add_Object_To_Array()
{
array_push(self::$articles, $this);
}
}
class Report extends Article{}
class Interview extends Article{}
-创建两个Report对象并将它们添加到它们的数组中:
$tmp = new Report();
$tmp->add_Object_To_Array();
$tmp = new Report();
$tmp->add_Object_To_Array();
-创建两个Interview对象并将它们添加到它们的数组中:
$tmp = new Interview();
$tmp->add_Object_To_Array();
$tmp = new Interview();
$tmp->add_Object_To_Array();
print_r(Report::$articles);
print_r(Interview::$articles);
上述脚本输出了两个数组:
Array
(
[0] => Report Object()
[1] => Report Object()
[2] => Interview Object()
[3] => Interview Object()
)
Array
(
[0] => Report Object()
[1] => Report Object()
[2] => Interview Object()
[3] => Interview Object()
)
如果你问我,这两个看起来非常相似,但第一个应该只包含报告,而第二个只包含访谈。
1. 看起来只有一个数组,为什么只有一个数组?
2. 我有一个静态容器,里面是同一类的对象,这种编码方式是否不好?(有什么建议吗?)
我对PHP还比较新,但我有Java背景。
Article
缺少其结束的}
。在该上下文中,$this
指的是抽象类Article
。您将如何将其推送到数组中? - StackSlave$tmp = new Report(); $tmp->add_Object_To_Array();
指的是“报告对象的函数”(面向对象思维)。我知道抽象类不能有对象。 - MathiasCiarlostatic::$articles
ÞÇîõ©ìµÿ»self::$articles
ÒÇé - AlexPstatic::
是必需的,但它只是解决方案的一部分。您还需要单独定义变量。 - jcsanyi