请问 Webman/thinkorm 能不能使用单例模式 是否会相互影响?

miaoxiaoye
class SystemConfig extends BaseModel
{
    // 数据表名称
    protected $name = 'system_config';
    // 当前模型实例缓存
    private static ?SystemConfig $_instance = null;

    /**
     * 获取当前模型实例
     * @return SystemConfig
     */
    public static function instance(): SystemConfig
    {
        if (self::$_instance === null) self::$_instance = new self();
        return self::$_instance;
    }
}

请问 Webman/thinkorm 能不能使用单例模式 是否会相互影响?

920 2 0
2个回答

静默

我记得手册有说,webman单例是请求间共享的,请求间是否互相影响看用法

  • 暂无评论
职业搬砖

不可以,静态变量常驻内存下一次请求并不会销毁,单例是线程不安全的会重复使用,原理类似springMVC 的@Scope注解,static类型是存储在静态存储区的,而方法和类是在堆栈中,程序执行后static类型不会随着堆栈释放而释放,它的值仍是上一次执行的值,你写个demo试试就知道了

  • 暂无评论
年代过于久远,无法发表回答
🔝