这个
之间有区别吗?$dependency1 = array();
$dependency2 = new SomeObject;
$di = new OtherObject($dependency1, $dependency2);
这个?
$di = new OtherObject(array(), new SomeObject);
在第一个示例中,$ dependency vars正在暴露给全局范围,这是显而易见的。但是第二个例子怎么样?它会创建封装吗?
对于传递给公共方法的参数也是如此吗?
我会测试它,但我不确定该怎么做......
答案 0 :(得分:1)
在第二种情况下,除非您知道OtherObject
的构造函数将它们分配给某些公共属性,否则您将看不到这两个参数。
答案 1 :(得分:0)
第一种方法在全局空间中留下两个对参数的引用。就是这样。如果需要使用相同的共享依赖项注入其他组件,请使用第一种方法。