Symfony3 扩展了 AppKernel

普亚·萨尔米达尼

我最近在一个项目中工作,在该项目中我在供应商内部构建了自己的 Bundle。这很好用。我还设法添加了我的配置依赖项和其他捆绑依赖项。

我的问题是:

我如何app/AppKernel用我自己的内核扩展内核。我要使用的内核在供应商内部(在我创建的捆绑包内部)。

我想要完成的是:

我的捆绑包与多个域“连接”(多个项目的一个 Symfony 安装)。将来会有很多更新,我可能会添加新的 Bundle 依赖项。我不想将它们一一添加到我的所有项目中。

我试过的

我已经尝试过设置symfony-bundles/bundle-dependency并且我已经关注了这个问题Bundles and Dependencies但看起来你之后仍然需要编辑 main AppKernel

还有其他建议吗?

巴托斯·扎萨达

我认为没有开箱即用的解决方案可以自动将 Composer 安装的包添加到AppKernel. 但是,如果您的包依赖项始终由单个包指定,您可以尝试以下操作:

  • 有一个指定的类,该类的方法返回您总是想要包含的包,例如:

    class MyKernelExtension
    {
        public static function getBundles()
        {
            return [
                new MyBundle(),
                new MyOtherBundle,
                // ...
            ];
        }
    }
    
  • AppKernel::registerBundles()

    class AppKernel extends Kernel
    {
        public function registerBundles()
        {
            $bundles = [
                new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
                // ...
            ];
    
            $bundles = array_merge($bundles, MyKernelExtension::getBundles());
    
            return $bundles;
        }
    }
    

您只需在 中添加一行AppKernel,而且您永远不必更改它。然后每次更改MyKernelExtension可安装 Composer 的包时,您只需更新它,并且捆绑包将被注册。

我不知道任何其他解决方案,但是这个解决方案似乎很简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章