使用完全限定类名(FQCN)作为服务标识
在许多示例中,你将找到服务 ID,例如’acme.demo.service.id’(带点的字符串)。你 services.yml
将是这样的:
services:
acme.demo.service.id:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
在你的控制器中,你可以使用此服务:
$service = $this->get('acme.demo.service.id');
虽然这没有问题,但你可以使用完全限定类名(FQCN)作为服务 ID:
services:
Acme\DemoBundle\Services\DemoService:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
在你的控制器中,你可以像这样使用它:
use Acme\DemoBundle\Services\DemoService;
// ..
$this->get(DemoService::class);
这使你的代码更易于理解。在许多情况下,拥有一个不仅仅是类名的服务 ID 是没有意义的。
从 Symfony 3.3 开始,如果你的服务 ID 是 FQCN,你甚至可以删除 class
属性。