php中的依赖注入实例详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-11 12:53:52 浏览: 评论:0
本文实例讲述了php中的依赖注入,分享给大家供大家参考,具体如下:
依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。
我到现在依然不大明白上面“依赖注入”的定义是什么……
有兴趣可以参考下《PHP之道》上面对“依赖注入”的 解释。
http://laravel-china.github.io/php-the-right-way/#dependency_injection
简而言之就是可以让我们在类的方法中更加方便的调用与之关联的类。
假设我们有一个这样的类
- class Test
- {
- public function index(Demo $demo,Apple $apple){
- $demo->show();
- $apple->fun();
- }
- }
如果想使用index方法我们一般需要这样做。
- $demo = new Demo();
- $apple = new Apple();
- $obj = new Test();
- $obj->index($demo,$apple);
index方法调用起来是不是很麻烦?上面的方法还只是有两个参数,如果有更多的参数,我们就要实例化更多的对象作为参数。如果我们引入的“依赖注入”,调用方式将会是像下面这个样子。
$obj = new dependencyInjection();
$obj->fun("Test","index");
我们上面的例子中,Test类的index方法依赖于Demo和Apple类。
“依赖注入”就是识别出所有方法“依赖”的类,然后作为参数值“注入”到该方法中。
dependencyInjection类就是完成这个依赖注入任务的。
- <?php
- /**
- * Created by PhpStorm.
- * User: zhezhao
- * Date: 2016/8/10
- * Time: 19:18
- */
- class dependencyInjection
- {
- function fun($className,$action){
- $reflectionMethod = new ReflectionMethod($className,$action);
- $parammeters = $reflectionMethod->getParameters();
- $params = array();
- foreach ($parammeters as $item) {
- preg_match('/> ([^ ]*)/',$item,$arr);
- $class = trim($arr[1]);
- $params[] = new $class();
- }
- $instance = new $className();
- $res = call_user_func_array([$instance,$action],$params);
- return $res;
- }
- }
在mvc框架中,control有时会用到多个model,如果我们使用了依赖注入和类的自动加载之后,我们就可以像下面这样使用。
- public function index(UserModel $userModel,MessageModel $messageModel){
- $userList = $userModel->getAllUser();
- $messageList = $messageModel->getAllMessage();
- }
灰常方便~
Tags: php依赖注入
相关文章
- ·php中依赖注入深入理解(2018-10-13)
- ·PHP基于反射机制实现自动依赖注入的方法详解(2021-08-22)
- ·PHP依赖注入原理与用法分析(2021-10-26)
- ·PHP依赖注入原理与用法分析(2021-10-26)
- ·PHP经典设计模式之依赖注入定义与用法详解(2021-11-22)
- ·php反射学习之依赖注入示例(2021-11-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)