【问题标题】:Creating dynamic static vars inside a class?在类中创建动态静态变量?
【发布时间】:2011-11-20 17:31:01
【问题描述】:

是否可以定义动态变量或无论如何执行以下操作?

示例 1:

class base
{
    protected static $$dynamicVar;

    protected function myFunction($value)
    {
        $dynamicVar = $value;
        self::$$dynamicVar = new $value();
    }
}

此代码背后的想法是实例化新对象,而基类不知道将实例化哪些对象。

我知道实例化新对象可以是动态的,但我需要它在静态变量上动态生成。

谢谢,

【问题讨论】:

  • 我知道我不能做受保护的静态 $$var。试图说明我需要什么。
  • 有人请告诉我一个需要这种结构的设计模式......

标签: php class object static-methods static-variables


【解决方案1】:

据我所知这是不可能的,但你总是可以这样做:

class base
{
   protected static $dynProps = array();

   protected function myFunction($value)
   {
      self::$dynProps[$value] = new $value();
   }
}

这里更重要的问题是“你为什么需要这个?”

【讨论】:

  • 谢谢,我会试试的。数组通常比常规变量慢,但它可能会很好用。做一个所有类都扩展这个基础的系统,这个基础负责加载所有子类都需要的其他几个基类,比如一个 db 类。我试图避免同一个类被实例化两次,如果我的系统结束时有两个类的两个实例扩展基并需要 db。所以,它会检查 $dynTempVar 是否不为空,如果不是,它会像我们上面提到的那样实例化这个类,然后应用 $this->$dyn = self::$$dynTempVar,所以可以和 $this 一起使用它跨度>
  • 据我所知,唯一的方法是使用静态变量,即使在不同的类上,如果它被提前定义,它的值也会保持不变。如果您有其他方法可以做到这一点,请不胜感激。
猜你喜欢
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 2012-09-02
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多