很长一段时间以来,我一直在使用类来防止重复代码,但它并不是真正的面向对象方法。
例如,我有一个Session类,它包含所有登录函数等,它需要一个Database类和一个Form类来运行。
在Session类的底部,我包括
$session = new Session;
$form = new Form;
我现在想要摆脱这种方法,并在我的类中使用new
关键字来获取类的新实例。
我的问题是,在过去总是有一个Form类的实例,我可以在我的视图中包含这行代码来检查类。
if($form->error("password")){
现在这不会运行,因为没有该类的实例。 如果我在此代码之前启动一个,它将覆盖类中已有的任何内容。
不确定如何解决这个问题,如果这个解释甚至足以让任何人理解我的问题。
任何帮助都将不胜感激。
答案 0 :(得分:3)
不要在课程中使用new
。您希望利用依赖注入,因为它提供了很多好处。
依赖注入是一种允许使用的软件设计模式 删除硬编码的依赖项并使其可以更改 它们,无论是在运行时还是在编译时。
我知道在这里做一个链接是不好的做法,但它会更好地解释它,然后我可以:
http://www.phptherightway.com/#dependency_injection
这是一个很棒的网站,并解释了现代PHP开发的最佳实践。
它会有很多帮助,并且会比我更好地解释它。另请参阅维基百科链接,因为它不会很快消失http://en.wikipedia.org/wiki/Dependency_injection。
彻底研究依赖注射以充分了解其益处。虽然这最初可能很难,但是一旦你开始遇到DI带来改变的场景,它就会有意义。