|
0
|
| Krzysztof WesoÅowski · 技术社区 · 9 年前 |
|
|
1
1
构建容器时,不能从容器中获取服务,只能获取服务定义。你想做的是:
在实例化服务时,将解析此类引用,并在必要时实例化缓存。 |
|
|
2
1
在编译器传递而不是扩展中执行。扩展只加载配置,还没有将其处理到容器生成器中。正如所描述的,编译器传递了操作服务定义的责任 in the documentation .
然后,创建编译器传递并在那里配置服务。由于服务尚未实例化,因此必须使用对服务的引用。从容器中检索服务的名称:
然后,在Bundle类中注册编译器传递:
|
|
|
3
0
我在这里找到了一条线索: Alter service (ClientManager) based on configuration inside bundle extension class 因此,最后,有一个折衷方案,编译器传递如下:
我的意思是,我必须从配置中传递一个类名。yml而不是服务名称。它工作得很好,但如果我也能传递服务id,那就更好了。 |