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