新手,刚接触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();
}
没人吗?打个∠先
开启控制器复用,控制器里注入的对象就相当于单例了。
只要容器符合psr11规范就可以在webman中用。
webman里单例和php-fpm有些不同,php-fpm是单个请求内共享的单例,请求结束后释放所有实例,A请求给单例设置的属性,B请求读不到。
webman单例是所有请求共享的单例,webman里A请求更改了单例的属性,B请求可以读取这个更改后的属性值。了解这点编码就不会有问题。
感谢回答~