php反射学习之依赖注入示例
本文实例讲述了php反射学习之依赖注入。分享给大家供大家参考,具体如下:
先看代码:
hasMethod($action)){
exit("Method$actiondoesnotexisted!");
}
//取类的构造函数
$constructor=$reflector->getConstructor();
//取构造函数的参数
$parameters=$constructor->getParameters();
//遍历参数
foreach($parametersas$key=>$parameter){
//获取参数声明的类
$injector=newReflectionClass($parameter->getClass()->name);
//实例化参数声明类并填入参数列表
$parameters[$key]=$injector->newInstance();
}
//使用参数列表实例controller类
$instance=$reflector->newInstanceArgs($parameters);
//执行
$instance->$action();
classHelloController
{
private$model;
publicfunction__construct(TestModel$model)
{
$this->model=$model;
}
publicfunctionactionWorld()
{
echo$this->model->property,PHP_EOL;
}
}
classTestModel
{
public$property='property';
}
(以上代码非原创)将以上代码保存为run.php
运行方式,在终端下执行phprun.phpHelloWorld
可以看到,我们要执行HelloController下的WorldAction,
HelloController的构造函数需要一个TestModel类型的对象,
通过php反射,我们实现了,TestModel对象的自动注入,
上面的例子类似于一个请求分发的过程,是路由请求的分发的一部分,假如我们要接收一个请求地址例如:/Hello/World
意思是要执行HelloController下的WorldAction方法。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。