【发布时间】:2014-11-15 15:20:39
【问题描述】:
我将举例说明:
有 2 个捆绑包:Foo\SecurityBundle 和 Foo\MenuBundle。Foo\MenuBundle 的菜单类如下所示:
namespace Foo\MenuBundle;
use Foo\SecurityBundle\MenuSecurer; //note this
class Menu{
protected $securer;
public function __construct(MenuSecurer $securer = null){
$this->securer = $securer;
}
public function buildMenu(){
//build the $menu ...
//...
if($this->securer != null)
$securer->secure($menu);
}
}
如果安装了安全包,它会自动注入 $menuSecurer,
但是问题是当没有安装安全包时,它的类也没有定义,所以即使我没有真正使用它,我也不能在 MenuBundle 中use Foo\SecurityBundle...。解决这个问题的正确方法是什么?
【问题讨论】:
-
澄清:问题主要是关于使用语句和使用但可能未声明的接口。
-
可能没有好的解决方案。您可以确保您的包依赖于包含接口的包,或者您可以将接口完全拆分为一个单独的包并需要那个包。或者我可能没有正确理解真正的问题。
-
@ChadSikorra :是的,这确实是我的问题。我目前正在做的事情:创建两个单独的服务,一个没有可选依赖项,一个没有。然后我使用 Compiler Pass in 更改服务定义依赖包。
标签: php symfony dependency-injection namespaces