构造函数注入变量的范围是什么?

时间:2013-06-01 00:49:39

标签: php oop design-patterns dependency-injection

这个

之间有区别吗?
$dependency1 = array();
$dependency2 = new SomeObject;

$di = new OtherObject($dependency1, $dependency2);

这个?

$di = new OtherObject(array(), new SomeObject);

在第一个示例中,$ dependency vars正在暴露给全局范围,这是显而易见的。但是第二个例子怎么样?它会创建封装吗?

对于传递给公共方法的参数也是如此吗?

我会测试它,但我不确定该怎么做......

2 个答案:

答案 0 :(得分:1)

在第二种情况下,除非您知道OtherObject的构造函数将它们分配给某些公共属性,否则您将看不到这两个参数。

答案 1 :(得分:0)

第一种方法在全局空间中留下两个对参数的引用。就是这样。如果需要使用相同的共享依赖项注入其他组件,请使用第一种方法。