使用完全限定类名(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 属性。