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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。