PHP中静态方法的生命

时间:2012-11-23 16:10:17

标签: php

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

当我第二次添加内容时,该类中的属性是否会保留其早期值? (通过静态方法添加,如果这会改变任何内容)

示例:

/* 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;
   }
}

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

1 个答案:

答案 0 :(得分:0)

是。 include()require()语句实质上将引用文件的内容转储到语句的位置。你可以把它想象成一个脚本。

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

如果你只想要实例化/初始化一次,那么使用Singleton模式是非常必要的。如果您希望在脚本中有其他实例,那么您将希望将其保留为普通类,并开始研究如何执行您想要的操作。即:Passing by reference