【发布时间】:2012-10-14 07:45:52
【问题描述】:
关于在另一个类中使用类对象的最佳做法是什么?在class_construct语句中传递类对象还是新建一个类对象?
示例 1:
class Foo {
private $bar;
public function __construct($bar){
$this->bar = $bar;
}
}
或示例 2:
class Foo {
private $bar;
public function __construct(){
$this->bar= NEW bar;
}
}
我知道,很明显,类文件必须已经包含在其他地方是理所当然的,并且在第一个实例中,这种类型的类对象需要已经存在,但我想知道优点是什么每种方法都是,因为我有很多类,我需要编写使用数据库对象的代码,并且我需要将其传递给类的最佳方法。还有比这两个更好的第三种选择吗?
据我了解,第一个的优点可能是代码少了几行,并且在数据库的情况下,没有创建新的连接。然而,第二个可能会更好,因为它更独立?无论如何,我想我会问专家。
【问题讨论】:
-
前者;它被称为依赖注入,或 DI:使单元测试变得更容易,因为你可以模拟你的 $bar
-
感谢大家的专业提示!
-
为了与 DI 人群背道而驰,如果被实例化的对象是类的其余部分所依赖的容器,那么几乎没有理由使用 DI。这不适用于 PHP,因为
array经常使用,但在强类型 OOP 语言(例如 C#)中,new Array、new List或new Dictionary都很好,并且不会'不需要作为参数传递。
标签: php oop class testing object