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

Xat*_*too 4 php symfony

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

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

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

我尝试了以下方法:

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

Flo*_*lus 8

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

class MyBundle extends Bundle
{
    public function boot()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*bov 5

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