中山php|最优网络中山做网站 中山php建站

最优良人

Posts Tagged With: 反射机制

什么是php反射机制以及利用php反射机制实现可插拔可扩展的插件架构

2011/08/26 at 00:06 » Comments (406)

反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。 反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言。php反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传递参数,动态调用类的静态方法。 * ** 反射api是php内建的oop技术扩展,包括一些类,异常和接口,综合使用他们可用来帮助我们分析其它类,接口,方法,属性,方法和扩展。这些oop扩展被称为反射,位于php源码/ext/reflection目录下。 可以使用反射api自省反射api本身(这可能就是反射最初的意思,自己"看"自己): <?php Reflection::export(new ReflectionExtension('reflection')); ?> 几乎所有的反射api都实现了reflector接口,所有实现该接口的类都有一个export方法,该方法打印出参数对象的相关信息。 使用get_declared_classes()获取所有php内置类,get_declared_interfaces(); get_defined_functions(); get_defined_vars(); get_defined_constants();可获取php接口,方法,变量,常量信息。 ** *** 反射初探: <?php //定义一个自定义类 class MyTestClass{ public function testFunc($para0='defaultValue0'){ } } //接下来反射它 foreach(get_declared_classes() as $class){ //实例化一个反射类 ...more »