PHP通过反射实现自动注入参数

现在的框架中都有一个容器, 而容器解决依赖的问题是通过反射来达到的, 所以记录一下PHP反射的知识。
首先先说明一下项目文件结构:

而我们要运行IndexController.php,而这个控制器的构造函数需要一个Request类,而Request类构造函数需要一个Http类。


  • IndexController.php

  • Request.php

  • Http.php

  • Application.php

  • index.php


输出:

反射的过程, 主要是通过实例化一个ReflectionClass反射类,然后通过这个类获取构造方法,
再获取构造方法的参数, 如果参数中需要注入对象,再递归通过反射获取对象,解决参数依赖。
最后构造方法的所有参数都存入一个数组,再调用ReflectionClass::newInstanceArgs就可以实例化出对象了(特殊情况,无需参数的可以直接 new
这就是一个完整的反射类动态注入参数的实例。
以上代码可以查看我的git仓库

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注