注册为服务的 Symfony 3.4 控制器抛出弃用警告

Symfony 3.4 controller registered as service throws deprecation warning

我有一个控制器,比方说Acme\ShopBundle\Controller\ProductListController

而其在services.yml中的定义如下:

services:
    Acme\ShopBundle\Controller\ProductListController:
        class: Acme\ShopBundle\Controller\ProductListController
        arguments: ['@product_service']

在我的日志文件中抛出这个:

User Deprecated: The "Acme\ShopBundle\Controller\ProductListController" service is private, checking for its existence is deprecated since Symfony 3.2 and will fail in 4.0.

其次是

User Deprecated: The "Acme\ShopBundle\Controller\ProductListController" service is private, getting it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You should either make the service public, or stop using the container directly and use dependency injection instead.

文件的堆栈跟踪列表完全在 vendor/symfony 内,所以我假设配置有误,但不知道是什么。任何帮助表示赞赏。

控制器服务必须是 public:

services:
    Acme\ShopBundle\Controller\ProductListController:
        public: true
        arguments: ['@product_service']

你为什么不使用自动装配?然后您可以注册所有控制器:

Acme\ShopBundle\Controller\:
    resource: '../src/Acme/ShopBundle/Controller' # mutatis mutandis
    tags: ['controller.service_arguments']

请阅读有关 Symfony 3 中依赖管理的新特性。