本文实例讲述了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,$appl学习英文e);
index方法调用起来是不是很麻烦?上面的方法还只是有两个参数,如果有更多的参数,我们就要实例化更多的对象作为参数。如果我们引入的“依赖注入”,调用方式将会是像下面这个样子。
$obj = new dependencyinjection();$obj->fun("test","index");
我们上面的例子中,test类的index方法依赖于demo和apple类。
“依赖注入”就是识别出所有方法“依赖”的类,然后作为参数值“注入”到该方法中。
dependencyinjection类就是完成这个依赖注入任务的。
<?php/** * created by 1980年2元人民币价格phpstorm. * ur: zhezhao * date: 2016/8/10 * time: 19:18 */class dependencyinjection{ function fu本手妙手n($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(); } $instan我国宝贵的历史文化遗产ce = new $classname(); $res = call_ur_func网店虚拟主机_array([$instance,$action],$params); return $res; }}
在mvc框架中,control有时会用到多个model。如果我们使用了依赖注入和类的自动加载之后,我们就可以像下面这样使用。
public function index(urmodel $urmodel,messagemodel $messagemodel){ $urlist = $urmodel->getallur(); $messagelist = $messagemodel->getallmessage();}
灰常方便~
本文发布于:2023-04-07 13:47:50,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4cc532858b7c5420c74e77061e7f57d6.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php中的依赖注入实例详解.doc
本文 PDF 下载地址:php中的依赖注入实例详解.pdf
留言与评论(共有 0 条评论) |