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实现获取近几日、月时间示例)
- php微信公众号管理后台(php实现微信公众号创建自定义菜单功能的实例代码)
- php去水印方法(PHP开发的文字水印,缩略图,图片水印实现类与用法示例)
- vuephp后台开发框架(Vue+thinkphp5.1+axios实现文件上传)
- thinkphp5.0实例详解(ThinkPHP5&5.1框架关联模型分页操作示例)
- php实现redis核心代码(PHP结合Redis+MySQL实现冷热数据交换应用案例详解)
- phpsession如何用(如何解决PHP获取不到SESSION信息之一般情况)
- phpstudy中apache到期如何修改(phpStudy找不到Apache“服务名” 解决方法)
- php服务号openid(php获取微信openid方法总结)
- php异常和错误区别(PHP批斗大会之缺失的异常详解)
- php 常见的设计模式(PHP中常用的三种设计模式详解单例模式、工厂模式、观察者模式)
- php 各类商品结算算法(PHP实现财务审核通过后返现金额到客户的功能)
- php怎么根据字符串长度设置(php常用字符串长度函数strlen与mb_strlen用法实例分析)
- php中row函数(PHP中number_format函数的用法讲解)
- thinkphp5.1 执行流程(Thinkphp5.0 框架的请求方式与响应方式分析)
- php生成md5(php进行md5加密简单实例方法)
- 全椒人在苏州10周年联谊会在苏州举办(全椒人在苏州10周年联谊会在苏州举办)
- 这个全椒人被通报表彰,看看你认识吗(这个全椒人被通报表彰)
- 全椒人,38年集体回忆 1980-2018 ,看完不要哭(全椒人38年集体回忆)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
- 泪目 这位 刷屏 的英雄,是全椒人的骄傲(泪目这位刷屏)
- 人从众 火炎焱 全椒再现 正月十六走太平 的魅力(人从众火炎焱全椒再现)
热门推荐
- laravel循环插入数据(Laravel 实现关系模型取出需要的字段)
- 如何重新配置mysql的端口(如何快速修改MySQL用户的host属性)
- python自动处理图片(python制作图片缩略图)
- php全栈之路教程(PHP进阶学习之依赖注入与Ioc容器详解)
- web服务器有几种(2019常见六种web服务器软件介绍)
- js的三种使用方法(JS带你深入领略Proxy的世界)
- JS中Location
- sqlserver语句创建窗口布局(SQL Server 2012 开窗函数)
- python中dict怎么创建(Python数据类型之Dict字典实例详解)
- dedecms中的有些功能如何修改(dedecms 每个栏目下的文章总数的调用)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9