hyperf 类属性是其他类对象会被共享吗
作者:互联网
在 Hyperf 框架中,类属性默认情况下是会被多个请求之间共享的。这是因为 Hyperf 使用了协程池来处理请求,并且每个协程池中的协程可以被多个请求复用。因此,类属性会在多个请求之间共享,并且可能导致数据污染的问题。
如果您希望类属性在每个请求中都具有独立的实例,可以通过在属性上使用 @var
注解来指定属性的类型,并在需要时使用 @named
或 @inject
注解来告诉 Hyperf 框架对该属性进行实例化和注入。
以下是一个示例:
use Hyperf\Utils\ApplicationContext;
use Psr\Container\ContainerInterface;
class YourClass
{
/**
* @var \YourNamespace\OtherClass
* @inject
*/
private $otherClass;
public function yourMethod()
{
// 通过 `$this->otherClass` 访问其他类对象
}
}
PHP
在上面的示例中,类属性 $otherClass
使用 @var
注解指定了类型,并使用 @inject
注解告诉 Hyperf 框架对该属性进行注入。这样,每个请求中的 YourClass
实例将具有独立的 $otherClass
对象。
通过使用注解,您可以告诉 Hyperf 框架在每个请求中为类属性创建独立的实例,避免了类属性在多个请求之间共享的问题。
需要注意的是,类属性的注入需要依赖 Hyperf 的依赖注入容器。确保您的类已经注册到容器中,或者使用 @named
注解来指定需要注入的类。
标签: 来源: