问一个关于依赖注入容器的问题

wasoncheung

问题描述

新手,刚接触webman

注意到使用php-di或者默认容器时,控制器等依赖注入的对象好像不是单例的。

所以我自己移植了 tp的容器,将所有对象变成了单例的。比如控制器实例

这样的改变会有潜在问题吗?

这种容器能完美支持webman吗?

  public function demo(Request $request, Test $test, Test $test1)
    {
        // 使用 php-di/默认 容器 输出 false
        // 使用 thinkphp 容器 输出 true
        dump($test === $test1);
        dump($this->t++);
        return $test->index();
    }
862 2 0
2个回答

wasoncheung

没人吗?打个∠先

  • 暂无评论
walkor

开启控制器复用,控制器里注入的对象就相当于单例了。

只要容器符合psr11规范就可以在webman中用。
webman里单例和php-fpm有些不同,php-fpm是单个请求内共享的单例,请求结束后释放所有实例,A请求给单例设置的属性,B请求读不到。

webman单例是所有请求共享的单例,webman里A请求更改了单例的属性,B请求可以读取这个更改后的属性值。了解这点编码就不会有问题。

年代过于久远,无法发表回答
🔝