我的应用程序需要一个缓存加热器,但为了使事情变得有趣,这个缓存加热器依赖于Symfony路由缓存加温器。Symfony服务应该如何包装?
在加载路由之前,我需要运行自己的代码,然后加载之后,我需要对生成的路由名称执行更多操作。为了这个工作,我需要用自己的实现来包装内置的路由加热器。
更换原始服务很简单,但是如何将该服务注入到我的替换中?
内置类已将router
服务注入到构造函数中。如果我在我自己的代码中复制了这个(请致电new RouteCacheWarmer
),它可能会破坏已替换服务的第三方包。如果另一个捆绑包的功能相同,也可能会破坏服务。
我的目标是运行我自己的高速缓存加热器,代替路由高速缓存加热器,但运行我自己的现有加热器。同时与其他可能已经修改了内置服务的软件包配合使用。
我当时看过CMF包。它取代了'Router'类而不是'RouteCacheWarmer'。基本上,它会在运行时创建路线,而缓存加热器只会在预热时间。使用他们的方法会对每个请求造成太多的开销。 – Twifty 2015-04-09 17:17:21
这是捆绑包的DynamicRouter部分,但我指的是ChainRouter服务。它允许您包含多个路由器并将所有路由编译到一个RouteCollection中。当然,你可以采取[ChainRouter来源](https://github.com/symfony-cmf/Routing/blob/master/ChainRouter.php),而不需要整个组件。 – 2015-04-09 17:42:59
我明白你的建议,但它没有回答这个问题。要使用链式加热器,我仍然需要将现有的加热器服务注入我自己,然后替换现有的加热器。我可以在编译器通行证中执行此操作,但如果另一个捆绑编译器通行证也想要取代该服务(取决于通行顺序),将会删除其中一个修改后的服务。 – Twifty 2015-04-09 18:13:37