【问题标题】:JMS DI Extra Bundle: How do I inject a dependency only if it existsJMS DI Extra Bundle:如何仅在依赖项存在时才注入依赖项
【发布时间】:2013-04-07 21:02:49
【问题描述】:

我正在使用 JMS DI 注入带有注解的服务:

use JMS\DiExtraBundle\Annotation as DI;
/**
 * @DI\Service("foo.bar.service")
 */
class myClass
{
    /**
    * @DI\Inject("debug.stopwatch")
    * @var $stopWatch \Symfony\Component\Stopwatch\Stopwatch
    */
    public $stopWatch;

    /**
    * @DI\Inject("serializer")
    * @var $serializer \JMS\Serializer\Serializer
    */
    public $serializer;

    public function toto()
    {
       if (isset($this->stopwatch)) {
         $this->stopWatch->start("init");
       }
    }
}

但 StopWatch 仅在 Dev Env 中可用,因此在 prod 中运行时:

The service "foo.bar.service" has a dependency on a non-existent service "debug.stopwatch".' in...

我的问题:如何在课堂上正确注入秒表服务?

【问题讨论】:

标签: php symfony dependency-injection


【解决方案1】:

建立依赖optional:

@DI\Inject("debug.stopwatch", required=false)

【讨论】:

  • 完美,重新阅读文档和found it,谢谢。
猜你喜欢
  • 2020-04-14
  • 2022-01-24
  • 2011-11-22
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 2018-03-07
相关资源
最近更新 更多