依赖注入原理:
依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。简而言之就是可以让我们在类的方法中更加方便的调用与之关联的类。
实例讲解:
假设有一个这样的类:
1
2
3
4
5
6
7
class test
{
public function index(demo $demo,apple $apple){
$demo->show();
$apple->fun();
}
}
如果想使用index方法我们需要这样做:
1
2
3
4
$demo = new demo();
$apple = new apple();
$obj = new test();
$obj->index($demo,$apple);
index方法调用起来是不是很麻烦?上面的方法还只是有两个参数,如果有更多的参数,我们就要实例化更正能量作文素材多的对象作为参数。如果我们引入的“依赖注入”,调用方式将会是像下面这个样子。
1
2
$obj = new dependencyinjection();
$obj->fun("test","index");
我们上面的例子中,test类的index方法依赖于demo和apple类。
“依赖注入”就是识别出所有方法“依赖”的类,然后作为参数值“注入”到该方法中。
dependencyinjection类就是完成这个依赖注入任务的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
/**
* created by phpstorm.
* ur: 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 ($para中秋留言mmeters as $item) {
preg_match('/> ([^ ]*)/',$item,$arr);
$class = trim($arr慢慢地造句[1]);
$params[] = new $class();
}
$instance = new $classname();
$res = call_ur_func_array([$instance,$action],$params);
return $res;
}
}
在mvc框架中,control有时会用到多个model。如果我们使用了依赖注入和类的自动加载之后,我们就可以像下面这样使用。
1
2
3
4
public function index(urmodel $urmodel,messagemodel $messagemodel){
$urlist = $urmodel->getallur();
$messagelist = $messagemodel->getallmessage();
}
本文发布于:2023-04-07 20:47:01,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/d40e6afc5d0025cde95ca7fd0ec2fa2d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:关于PHP中依赖注入的详细介绍.doc
本文 PDF 下载地址:关于PHP中依赖注入的详细介绍.pdf
| 留言与评论(共有 0 条评论) |