【问题标题】:PHP change variable value in only one of multiple instances of a classPHP仅在类的多个实例之一中更改变量值
【发布时间】:2014-03-04 11:55:47
【问题描述】:

我正在构建一个框架。我在加载多个控制器时遇到问题,因为它们扩展了一个基本控制器,其中实例更改为最后加载的控制器选项。如何仅影响当前正在使用的控制器类的扩展基本控制器,而不影响基本控制器的所有实例?

class loader
{
    private static $_inst;

    public function __construct($class) 
    {
        self::$_inst = $class;
    }
}

abstract class base_controller 
{
    protected $load;

    public function __construct() 
    {
        $this->load = new loader($this);
    }
}

class controller1 extends base_controller {}

class controller2 extends base_controller {}

当第一个控制器加载时,它会在加载器中设置实例。但是当您加载第二个控制器时,它会将控制器 1 的加载器对象静态 $_inst 设置为控制器 2 的实例。有什么建议吗?

【问题讨论】:

  • 您正试图在第 525 行取消引用空指针。
  • 您在基类中使用静态属性吗?

标签: php instance


【解决方案1】:

$_inst 将在所有类中保持不变,因为您已将其定义为 static

解决方案:

只需删除static 并使其成为private $_inst;

【讨论】:

  • 问题是,如果我删除静态,它将进行递归(循环),但是谢谢。
【解决方案2】:

静态成员在其声明类级别共享。如果您想要其他行为,则必须在每个子类中声明它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2014-11-19
    • 2020-08-24
    • 2016-11-17
    • 2013-11-09
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多