0

我有一个类,我在其中实现了一个数组属性。我想在该属性中设置几个对象。它将在请求流中多次完成,因此它被声明为静态。它不是一个单例类。

当我第二次向它添加一些东西时,该类中的属性是否会保留其早期的值? (添加是通过静态方法完成的,如果这改变了任何东西)

这个例子:

/* file1.php */
Foo::add('value1');
include 'file2.php';

/* file2.php */
...
Foo::add('value2');

这是 的定义Foo

class Foo {
   public static $bar = [];
   public static function add($value)
   {
      Foo::$bar[] = $value;
   }
}

这是一个好习惯吗?单身在这里更好吗?有没有其他方法可以解决这个问题?

4

1 回答 1

0

是的。include()and语句本质上是将引用文件的require()内容转储到语句所在的位置。您可以将其全部视为一个脚本。

您可以通过添加var_dump(Foo::bar);到脚本末尾来自己测试您的问题。

仅当您只希望类实例化/初始化一次时,才真正需要使用单例模式。如果您希望在脚本中包含其他实例,那么您将希望将其保留为普通类并开始研究如何做您想做的事情。即:通过引用传递

于 2012-11-23T16:14:04.797 回答