依赖注入 - 传递对象

时间:2013-05-03 12:08:57

标签: php dependency-injection

我正在创建基于OOP原则的东西,我正在尝试应用依赖注入。我知道我可能在这里做错了什么,整个DI事情似乎更令人困惑,可能是因为我仍然在努力让自己深入了解它。

我创建了一个Form类,它将输出各种表单元素,但是表单类至少需要两个其他类(创建为对象)才能正常运行。

以下是我的说法:

$config = new Config();
$db = new Database();
$html = new HTML();

$form = new Form($config, $db, $html);

这只是我在玩,所以Form可能不需要所有这些东西,但我用它们来说明这一点。

现在,当我创建表单时,我不想将三个对象传递给它以使用它。我可以用静态方法等解决这个问题,但它真的不是我想要走的路。

那么能够使用之前在Form类中创建的三个对象的最佳方法是什么?

我想我在某种程度上想要几乎全球性的行为。

我发现了一些关于这个和工厂,IoC容器等的事情,但没有任何解释清楚,容易,所以任何帮助都会很好。或者甚至链接到易于理解的教程或者我自己找不到的东西。

我也发现了疙瘩 - 这样的东西能沿着正确的方向行进吗?

1 个答案:

答案 0 :(得分:3)

好吧,如果你没有传递这三个对象,你就不会进行依赖注入。

要再次避免参数,可以编写Wrapper类或具有创建和返回表单对象的方法的工厂类。您可以使用$config, $db, $html初始化rhe工厂类,然后将其用于创建的每个表单。

所以这个过程看起来像这样:

$factory= new Factory($config, $db, $html);
$form= $factory->createForm();