我有一个实现数组属性的类。我想在该属性中设置几个对象。它将在请求流程中多次完成,因此它被声明为静态。而且它不是单身人士。
当我第二次添加内容时,该类中的属性是否会保留其早期值? (通过静态方法添加,如果这会改变任何内容)
示例:
/* 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;
}
}
这是一个好习惯吗?单身人士在这里更好吗?有没有其他方法可以解决这个问题?
答案 0 :(得分:0)
是。 include()
和require()
语句实质上将引用文件的内容转储到语句的位置。你可以把它想象成一个脚本。
您可以通过在脚本末尾添加var_dump(Foo::bar);
来自行测试您的问题。
如果你只想要实例化/初始化一次,那么使用Singleton模式是非常必要的。如果您希望在脚本中有其他实例,那么您将希望将其保留为普通类,并开始研究如何执行您想要的操作。即:Passing by reference。