我正在创建基于OOP原则的东西,我正在尝试应用依赖注入。我知道我可能在这里做错了什么,整个DI事情似乎更令人困惑,可能是因为我仍然在努力让自己深入了解它。
我创建了一个Form类,它将输出各种表单元素,但是表单类至少需要两个其他类(创建为对象)才能正常运行。
以下是我的说法:
$config = new Config();
$db = new Database();
$html = new HTML();
$form = new Form($config, $db, $html);
这只是我在玩,所以Form可能不需要所有这些东西,但我用它们来说明这一点。
现在,当我创建表单时,我不想将三个对象传递给它以使用它。我可以用静态方法等解决这个问题,但它真的不是我想要走的路。
那么能够使用之前在Form类中创建的三个对象的最佳方法是什么?
我想我在某种程度上想要几乎全球性的行为。
我发现了一些关于这个和工厂,IoC容器等的事情,但没有任何解释清楚,容易,所以任何帮助都会很好。或者甚至链接到易于理解的教程或者我自己找不到的东西。
我也发现了疙瘩 - 这样的东西能沿着正确的方向行进吗?
答案 0 :(得分:3)
好吧,如果你没有传递这三个对象,你就不会进行依赖注入。
要再次避免参数,可以编写Wrapper类或具有创建和返回表单对象的方法的工厂类。您可以使用$config, $db, $html
初始化rhe工厂类,然后将其用于创建的每个表单。
所以这个过程看起来像这样:
$factory= new Factory($config, $db, $html);
$form= $factory->createForm();