温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在php项目中进行依赖注入

发布时间:2021-01-16 09:49:39 来源:亿速云 阅读:228 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关怎么在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项目中进行依赖注入就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI