OO-PHP误解

OO-PHP误解,php,Php,相当长一段时间以来,我一直在使用类来防止代码重复,但这并不是一种真正的面向对象方法 例如,我有一个会话类,它包含所有登录函数等,它需要一个数据库类和一个表单类来操作 在课程的最后一节课上,我包括 $session = new Session; $form = new Form; 现在,我想放弃这种方法,在我的类中使用new关键字来获取类的新实例 我的问题是,当过去总是有Form类的实例时,我可以在视图中包含这行代码来检查该类 if($form->error("password")){

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

例如,我有一个会话类,它包含所有登录函数等,它需要一个数据库类和一个表单类来操作

在课程的最后一节课上,我包括

$session = new Session;
$form = new Form;
现在,我想放弃这种方法,在我的类中使用
new
关键字来获取类的新实例

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

if($form->error("password")){
现在,由于没有该类的实例,因此不会运行该类。 如果我在此代码之前启动一个,它将覆盖类中已有的任何内容

if($form->error("password")){
我不知道该怎么做,也不知道这个解释是否足以让任何人理解我的问题


任何帮助都将不胜感激。

不要在课堂上使用
new
。您希望使用依赖性注射,因为它提供了巨大的好处

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

我知道在这里只放一个链接是不好的做法,但它会比我能做的更好地解释:

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

这会有很大帮助,而且会比我解释得更好。还可以查看维基百科链接,因为它不会很快消失

彻底研究依赖注入以充分了解其好处。虽然一开始这可能很困难,但一旦您开始遇到DI发挥作用的场景,这将是有意义的

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

将依赖的类“注入”到类中(即,将它们作为构造函数中的参数传入)。