教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 关于PHP中依赖注入的详细介绍

关于PHP中依赖注入的详细介绍

发布时间:2020-10-25   编辑:jiaochengji.com
教程集为您提供关于PHP中依赖注入的详细介绍等资源,欢迎您收藏本站,我们将为您提供最新的关于PHP中依赖注入的详细介绍资源

依赖注入原理:

依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。简而言之就是可以让我们在类的方法中更加方便的调用与之关联的类。

实例讲解:

假设有一个这样的类:

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(); }

推荐教程:PHP视频教程

以上就是关于PHP中依赖注入的详细介绍的详细内容,更多请关注教程集其它相关文章!

  • 本文原创发布教程集,转载请注明出处,感谢您的尊重!
  • 您可能感兴趣的文章:
    关于PHP中依赖注入的详细介绍
    php为什么要用依赖注入?
    php依赖注入的三种方式
    Go 语言包管理机制深入分析
    通俗易懂理解PHP依赖注入容器
    [PHP学习] 控制反转以及依赖注入的日常使用
    php依赖注入的原理
    PHPUnit教程(三)测试方法进阶
    从匿名函数(闭包特性)到 PHP 设计模式之容器模式
    Laravel 深入理解控制反转(IoC)和依赖注入(DI)

    [关闭]
    ~ ~