php - 如何在 Symfony 的另一个服务中注入(inject)一个服务?

标签 php symfony

我正在尝试在另一项服务中使用日志记录服务以排除该服务的故障。

我的 config.yml 看起来像这样:

services:
    userbundle_service:
        class:        Main\UserBundle\Controller\UserBundleService
        arguments: [@security.context]

    log_handler:
        class: %monolog.handler.stream.class%
        arguments: [ %kernel.logs_dir%/%kernel.environment%.jini.log ]


    logger:
        class: %monolog.logger.class%
        arguments: [ jini ]
        calls: [ [pushHandler, [@log_handler]] ]

这在 Controller 等方面工作得很好。但是当我在其他服务中使用它时我没有输出。

有什么建议吗?

最佳答案

您将服务 ID 作为参数传递给服务的构造函数或 setter 。

假设您的其他服务是 userbundle_service:

userbundle_service:
    class:        Main\UserBundle\Controller\UserBundleService
    arguments: [@security.context, @logger]

现在 Logger 被传递给 UserBundleService 构造函数,前提是您正确更新它,例如

protected $securityContext;
protected $logger;

public function __construct(SecurityContextInterface $securityContext, Logger $logger)
{
    $this->securityContext = $securityContext;
    $this->logger = $logger;
}

关于php - 如何在 Symfony 的另一个服务中注入(inject)一个服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11801541/

相关文章:

php - 什么是原生为 Windows 编写的良好通用开源 IDE?

symfony - 事件监听器未在 Doctrine 事件上注册或调用

symfony - 在 symfony3 中获取渲染子组件中的路由 Controller / Action

php - PHP foreach 超出内存限制

php - 如何计算Paypal付款费用

PHP strlen() 或 mb_strlen() 返回意外结果

php - 我想使用 php mysql 从表中检索 24 小时前发布的所有记录

php - symfony html2pdf 不渲染 pdf 的问题

mysql - Symfony2应用程序: Host database only

forms - Symfony2 : How to modify a form value before validation