【发布时间】:2014-09-23 20:01:37
【问题描述】:
我刚刚了解了依赖注入。但是我遇到了这个问题:因为我的类的一些依赖对象可能非常大的数量,将它们全部传递给类构造函数可能会很长而且不清楚,例如,
interface FooInterface {
function fooMethod();
}
class Foo implements FooInterface {
function fooMethod(){
return 'Foo';
}
}
class Boo
{
public $foo;
public function __construct(FooInterface $foo) // This one is ok because it depends on one object only,
{
$this->foo = $foo;
}
}
class BooFactory
{
public static function create()
{
return new Boo(new Foo);
}
}
$a = new BooFactory;
$b = $a->create();
var_dump($b->foo->fooMethod());
如果它依赖于很多对象怎么办,
class Boo
{
public function __construct(FooInterface $foo, TooInterface $boo, PooInterface $poo, etc, etc ,etc, etc, etc)
{
//
}
}
你不觉得它看起来太多了吗?还是正常?或者我应该怎么做?
【问题讨论】:
-
这是Dependency Injection Containers(如Pimple或PHP-DI)设计处理的问题
-
如果你有这么多的依赖,这会成为一个问题,这是一个强烈的信号,表明你违反了 SRP(单一责任原则),你可能想分成多个类。跨度>
-
@NikiC:我怎样才能把它分成多个类?例如,它是一个控制器类,它需要这些类 -
Article、Nav、Auth等,以便根据请求加载页面。
标签: php interface dependency-injection