当前位置:编程学堂 > 了解PHP依赖注入和控制反转_php小技巧

了解PHP依赖注入和控制反转_php小技巧

  • 发布:2023-10-06 12:13

如果你想了解PHP依赖注入和控制反转这两个概念,你必须了解以下问题:

DI——依赖注入

IoC——控制反转

1。参与者有哪些?   

答案: 一般涉及三方,一是对象,二是对象。一是IoC/DI的容器;另一个是对象的外部资源。让我再解释一下名词。对象是指任何普通的Java对象; IoC/DI容器简单来说就是用来实现IoC/DI功能的框架程序;对象的外部资源引用该对象。需要的,但是从对象外部获得的,统称为资源,比如:该对象需要的其他对象,或者该对象需要的文件资源等。

2。依赖:谁依赖谁?为什么会有依赖关系?

答案:一个对象依赖于IoC/DI容器。依赖性是不可避免的。在一个项目中,各个类之间存在着各种各样的关系,不可能都完全独立,这就形成了依赖关系。传统开发是在使用其他类时直接调用,这样会形成强耦合,应该避免。依赖注入借用容器来传递依赖对象,实现解耦。

3。注射:谁给谁注射?具体注射的是什么?

答案:通过容器将其需要的外部资源注入到对象中

4。控制反转:谁控制谁?控制什么?为什么叫逆转呢?

答案:IoC/DI的容器控制对象主要控制对象实例的创建。反转是相对于正向而言的,那么什么才算是正向呢?想想正常情况下的应用。如果你想在A中使用C,你会怎么做?当然,直接创建C的对象,即在A类中主动获取所需的外部资源C,这种情况称为前向。那么什么是反向呢?即A类不再主动获取C,而是被动等待IoC/DI容器获取C的实例,然后反向注入到A类中。

5。依赖注入和控制反转是同一个概念吗?

答案:从上面可以看出:依赖注入是从应用程序的角度来描述的。依赖注入可以更全面地描述:应用程序依赖容器来创建和注入它需要的外部资源;而控制响应的描述是从容器的角度来看的。完整的描述是:容器控制应用程序,容器将应用程序所需的外部资源反向注入到应用程序中。

我们通过例子来详细了解一下依赖注入的一些实现方法

1.构造函数注入

db_conn = $db_conn;
  }
}
登录后复制

2。坐垫注射

db=$db;
   }
   函数设置文件($文件){
     $这个->文件=$文件;
   }
}
类文件{}
类数据库{}
...

课堂测试{
   $book = new Book();
    $book->setdb(new db());
   $book->setfile(新文件());
}
?>

登录后复制

上面两种方法的代码都很清晰,但是当我们需要注入很多依赖的时候,就意味着增加很多行,管理起来会比较困难。

更好的解决方案是创建一个类作为所有依赖项的容器。在这个类中,您可以存储、创建、获取和查找所需的依赖项

set_db(self::$db_conn);
    //...
    //...
    //其他依赖注入
    返回$new_book;
  }
}
登录后复制

此时如果想要获取一个book实例,只需要执行$newone = Ioc::makebook();

以上是容器的具体例子。最好不要编写特定的依赖注入方法。最好使用注册表注册并获取

登录后复制

您现在可以通过以下方式注册注射一支

setdb('...');
$book->setprice('...');
返回 $book;
});
 
//注入依赖
$book = Ioc::resolve('book');
?>

登录后复制

以上就是对PHP依赖注入和控制反转的理解。希望对大家学习PHP编程有所帮助。

相关文章

热门推荐