notes
notes copied to clipboard
PHP Reflection or PHP 反射
官方释义
从 PHP 5 开始支持反射。并提供了完整的反射 API。 添加了对类、接口、函数、方法和扩展进行逆向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。
从以上描述可以得出的结论在于一个关键词 “逆向工程”。 反射的最基本用途就在于一个逆向溯源。 它的主要目的就是在运行时分析类或者对象的状态。 从而可以导出或提取出关于类、方法、属性、参数等的详细信息,包括注释等。
常用场景
元编程、依赖注入、对象池、动态代理、自动生成文档、某些设计模式等。
平时应用最多的可能就是利用反射在运行时对某些对象就行调试。 还可以在不修改目标类代码的情况下,调用其私有属性及方法。 以及用反射封装对象访问的动态代理,从而可以实现诸如拦截,参数预处理等效果。
利用好这些,我们就可以在不改变原有代码的基础上,在外层封装一层代理或者叫做“壳子”。 这层“壳子”可以动态的改变原有的运行逻辑,所以能够实现更抽象和复杂的扩展。
至于其他的像依赖注入之类的,一般来说底层框架会用到。 日常的业务逻辑中,一般来说很少会有用到反射的情况。
总结
备忘一下,人老记性差。 用到的时候,猛然忘了叫什么。。。
别人的栗子,顺手牵羊: What is Reflection in PHP? Reflection in PHP Meta Programming and Reflection in PHP
Reflection => 反射