跳到内容

如何定义非共享服务

编辑此页

在服务容器中,所有服务默认都是共享的。这意味着每次你检索服务时,你都会得到 *相同* 的实例。这通常是你想要的行为,但在某些情况下,你可能希望始终获得一个 *新的* 实例。

为了始终获得一个新实例,请在你的服务定义中将 shared 设置为 false

1
2
3
4
5
6
7
8
9
10
// src/SomeNonSharedService.php
namespace App;

use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;

#[Autoconfigure(shared: false)]
class SomeNonSharedService
{
    // ...
}

现在,无论何时你从容器中请求 App\SomeNonSharedService,你都会得到一个新的实例。

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本