notes icon indicating copy to clipboard operation
notes copied to clipboard

PHP Reflection or PHP 反射

Open lanlin opened this issue 7 years ago • 0 comments

官方释义

PHP Reflection 官方文档

从 PHP 5 开始支持反射。并提供了完整的反射 API。 添加了对类、接口、函数、方法和扩展进行逆向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。

从以上描述可以得出的结论在于一个关键词 “逆向工程”。 反射的最基本用途就在于一个逆向溯源。 它的主要目的就是在运行时分析类或者对象的状态。 从而可以导出或提取出关于类、方法、属性、参数等的详细信息,包括注释等。

常用场景

元编程、依赖注入、对象池、动态代理、自动生成文档、某些设计模式等。

平时应用最多的可能就是利用反射在运行时对某些对象就行调试。 还可以在不修改目标类代码的情况下,调用其私有属性及方法。 以及用反射封装对象访问的动态代理,从而可以实现诸如拦截,参数预处理等效果。

利用好这些,我们就可以在不改变原有代码的基础上,在外层封装一层代理或者叫做“壳子”。 这层“壳子”可以动态的改变原有的运行逻辑,所以能够实现更抽象和复杂的扩展。

至于其他的像依赖注入之类的,一般来说底层框架会用到。 日常的业务逻辑中,一般来说很少会有用到反射的情况。

总结

备忘一下,人老记性差。 用到的时候,猛然忘了叫什么。。。

别人的栗子,顺手牵羊: What is Reflection in PHP? Reflection in PHP Meta Programming and Reflection in PHP

Reflection => 反射

lanlin avatar Sep 12 '18 02:09 lanlin