在类中创建动态静态变量?
是否可以定义动态变量或无论如何执行以下操作?在类中创建动态静态变量?
实施例1:
class base
{
protected static $$dynamicVar;
protected function myFunction($value)
{
$dynamicVar = $value;
self::$$dynamicVar = new $value();
}
}
此代码背后的想法是实例化新的对象,而不基类知道什么对象将被实例化。
我知道实例化新对象可以是动态的,但我需要动态生成静态变量。
感谢,
这是不可能的,因为据我所知,但你总是可以做这样的事情:
class base
{
protected static $dynProps = array();
protected function myFunction($value)
{
self::$dynProps[$value] = new $value();
}
}
这里更重要的问题是“你为什么需要这个? “
谢谢,我会尝试。数组通常比普通增值变慢,但它可能会很好。做一个系统,所有的类都扩展了这个基础,并且这个基础负责加载所有子类中需要的其他基类,比如db类。我试图避免相同的类被实例化两次,如果我的系统结束有两个类的两个类扩展base和需要分贝。因此,它会检查$ dynTempVar是否为空,如果不是,它会像我们上面提到的那样实例化类,然后应用$ this - > $ dyn = self :: $$ dynTempVar,所以可以使用它$ this – Henrique
As我知道做这件事的唯一方法是使用静态变量,即使在不同的类中,静态变量也会保留其值,即使它是早期定义的。欣赏如果你有另一种方式来做到这一点。 – Henrique
我知道我不能做保护静态$$ var。试图说明我需要什么。 – Henrique
有人请告诉我一个设计模式,需要这样的结构... –