OO PHP的误解

时间:2013-12-09 12:27:53

标签: php

很长一段时间以来,我一直在使用类来防止重复代码,但它并不是真正的面向对象方法。

例如,我有一个Session类,它包含所有登录函数等,它需要一个Database类和一个Form类来运行。

在Session类的底部,我包括

$session = new Session;
$form = new Form;

我现在想要摆脱这种方法,并在我的类中使用new关键字来获取类的新实例。

我的问题是,在过去总是有一个Form类的实例,我可以在我的视图中包含这行代码来检查类。

if($form->error("password")){

现在这不会运行,因为没有该类的实例。 如果我在此代码之前启动一个,它将覆盖类中已有的任何内容。

不确定如何解决这个问题,如果这个解释甚至足以让任何人理解我的问题。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

不要在课程中使用new。您希望利用依赖注入,因为它提供了很多好处。

  

依赖注入是一种允许使用的软件设计模式   删除硬编码的依赖项并使其可以更改   它们,无论是在运行时还是在编译时。

我知道在这里做一个链接是不好的做法,但它会更好地解释它,然后我可以:

http://www.phptherightway.com/#dependency_injection

这是一个很棒的网站,并解释了现代PHP开发的最佳实践。

它会有很多帮助,并且会比我更好地解释它。另请参阅维基百科链接,因为它不会很快消失http://en.wikipedia.org/wiki/Dependency_injection

彻底研究依赖注射以充分了解其益处。虽然这最初可能很难,但是一旦你开始遇到DI带来改变的场景,它就会有意义。

大多数现代PHP框架都使用DI,例如LaravelPhalcon