在Symfony内核初始化上运行代码

时间:2015-05-29 11:46:06

标签: php symfony

如何在启动Symfony2内核后执行bundle中的某些代码?

  • 必须在处理请求或运行控制台命令之前运行代码。
  • 代码必须执行一次,即使内核在其生命周期内处理多个请求也是如此。
  • 代码必须能够访问捆绑包配置。因此,它可能不会在过程的早期运行。

我需要这个的原因是我需要注册一个流包装器。我需要能够使用bundle配置,因为流包装器定义是在config中定义的。

我尝试了以下内容:

  • 实现bundle类的构造函数。 (这不起作用,此时并非所有捆绑包都已初始化)
  • kernel.requestconsole.command创建事件侦听器(当内核在其生命周期内处理多个请求时,这将导致代码执行多次。)

2 个答案:

答案 0 :(得分:6)

您可以覆盖捆绑包的boot方法。

class MyBundle extends Bundle
{
    public function boot()
    {

    }
}

答案 1 :(得分:4)

您可以将一项服务注册为kernel.requestconsole.command的事件监听器。它将从控制台和HTTP请求中触发。