我正在尝试创建一个类的实例,但是我很难让它们拥有自己独立的属性值。
class A{
public static $value = NULL;
}
for ($i=0; $i <= 1; $i++) {
class_alias('A', 'A'.$i);
}
A0::$value = 1;
echo A0::$value; // echo 1
A1::$value = 9;
echo A1::$value; // echo 9
echo A0::$value; // echo 9
此处,A0::$value
应回显值'1'。
我知道它们是别名所以唯一改变的是它们被称为的名称。
我正在处理的class
有很多静态methods
和properties
,我需要能够从这个A0::method()
中调用它。代码所以我不能只在这样的变量中创建类的实例:
$A1 = new A();
$A2 = new A();
如何创建一个类的实例,我可以在不使用变量的情况下静态调用它,并使其具有独立于其他别名的属性值?
答案 0 :(得分:3)
简单回答:你做不到。
静态成员“绑定”到给定的类,而不是对象。因此,对它们执行的每个更改都将显示在从您的类创建的每个别名/对象上。
您必须重新考虑您的代码。