php联合注入列表总结(php中的依赖注入实例详解)
类别:编程学习 浏览量:2581
时间:2021-10-28 10:24:46 php联合注入列表总结
php中的依赖注入实例详解本文实例讲述了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(); } |
灰常方便~
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/52175506
您可能感兴趣
- php中如何使用缓存(PHP使用OB缓存实现静态化功能示例)
- php闰年计算公式(php判断/计算闰年的方法小结三种方法)
- php开发中用什么模板(PHP模版引擎原理、定义与用法实例)
- php怎么创建一个文件(PHP文件后缀不强制为.php方法)
- thinkphp框架多文件上传完整代码(Thinkphp5 自定义上传文件名的实现方法)
- phpob函数使用方法(php中isset与empty函数的困惑与用法分析)
- php实现session入库实例(PHP使用Session实现上传进度功能详解)
- thinkphp前后端配合(thinkPHP+LayUI 流加载实现功能)
- 宝塔面板phpMyAdmin错误教程(宝塔面板phpMyAdmin报错502 Bad Gateway nginx解决方法)
- php守护进程(什么是PHP7中的孤儿进程与僵尸进程)
- php框架制作方法(PHP从零开始打造自己的MVC框架之路由类实现方法分析)
- php+mysql源码部署教程(在WIN主机IIS上支持PHP和MySQL实现方法)
- 宝塔linux面板php7.0安装不上(宝塔面板php.ini文件在哪里找)
- php框架创建控制器代码(php连接sftp的作用以及实例代码)
- php中isset函数有什么功能(PHP中的empty、isset、isnull的区别与使用实例)
- php7.4编译安装(PHP7.3.10编译安装教程)
- 你好,新成理人丨成都理工大学2019级新生开学典礼隆重举行(新成理人丨成都理工大学2019级新生开学典礼隆重举行)
- 这部民警编演的红色话剧,讲述了一个不断追寻的故事(这部民警编演的红色话剧)
- 日本菜有什么好吃(日本菜有什么好吃的做法)
- 韩国泡菜做法(韩国泡菜的做法步骤)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 越难春卷(越难春卷皮怎么用)
热门推荐
- SQL SERVER获取指定数据库中所有存储过程的参数
- 小程序实现购物车功能前后端代码(小程序实现购物车完整版)
- dockerpull的镜像位置(解决docker pull镜像报错的问题)
- html5播放视频的元素(HTML5在手机端实现视频全屏展示方法)
- css3浮动教程(CSS3使用多列制作瀑布流)
- vue组件之间的通信(超详细的vue组件间通信总结)
- laravel零基础(基于laravel Request的所有方法详解)
- dede执行查询语句(dede调用指定栏目下相关文章的实现方法)
- python列表和条件组合的处理(一篇文章带你弄懂Python基础之列表相关操作和嵌套)
- laravel授权怎么用(laravel 使用auth编写登录的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9