我们说我有一个名为Foo的庞大班级。 如果我必须在不同的课程中多次调用此类,使用它的最佳方法是什么?
注意: Bar不是唯一使用Foo的类。
选项#1(在需要时创建对象):
class Bar
{
public function myMethod($arg)
{
$foo = new Foo();
$something = $foo->doSomething($arg);
return $something;
}
}
选项#2(创建一次):
class Bar
{
protected $foo;
public function __construct()
{
$this->foo = new Foo();
}
}
选项#3(使Foo静态):
class Bar
{
public function myMethod($arg)
{
return Foo::doSomething($arg);
}
}
选项#4:
//告诉我正确的方法
答案 0 :(得分:1)
我要说的最好的方法是在Foo
类之外实例化Bar
并将其作为依赖项注入 - 最好的方法是通过构造函数:
class Bar
{
private $foo;
public function __construct(Foo $foo)
{
$this->foo = foo;
}
}
$foo = new Foo();
$bar = new Bar($foo);
然后对所有以Foo
作为依赖项的类执行相同操作。如果实例合适,您可以重复使用该实例,或者如果需要,您可以创建一个新实例。