PHP的详细反射和示例代码
类Foo {
公共$ = 1;
受保护的$ bar = 2;
私人巴兹= 3美元;
*在这里输入说明…
* /
公共职能MyMethod()
{
echo'hello 2B;
}
}
$ref =新ReflectionClass('foo);
$道具= $ref -> getProperties();
foreach($道具美元值){
echo $价值-> getName()。;
}
输出
/ /巴兹
reflectionclass这类返回一个类的相关信息,如属性、方法、命名空间、等等!在最后一个例子中,reflectionclass::reflectionproperty GetProperties返回一个对象数组。
The ReflectionProperty class reports the related information of the properties of the class.For example, isDefault isPrivate isProtected isPublic isStatic and so on, the method getName is the name of obtaining the attribute!
以上是对属性的获取,以及对类方法的访问,例如
类Foo {
公共$ = 1;
受保护的$ bar = 2;
私人巴兹= 3美元;
*在这里输入说明…
* /
公共职能MyMethod()
{
echo'hello 2B;
}
}
$ref =新ReflectionClass('foo);
$方法= $ref - >中('mymethod);
$方法->调用($ref -> newInstance());
ReflectionClass::方法是一种新型的抗反射的反射波法,对班级信息报告的方法,如是抽象的计划为isconstructor保护是静态的,还有一个重要的方法的调用,invokeargs的执行方法!
其他物体可以看手册,不是很硬!
那个反射的用途是什么
思考是一个动态的概念,它可以用来帮助我们分析其他的类,接口,方法,属性,方法,和扩展模式也可以建立,如动态代理。反映在一些PHP框架的使用也很频繁,如Kohana、Yii、和Kohana的MVC编码它使用反射!
验证控制器的启动
美元类=新ReflectionClass(ucfirst(路由器::$控制器)。'_controller);
一个新的控制器实例
$控制器=美元类-> newInstance();
控制器方法加载
$方法=美元类-> getMethod(路由器::$方法);
控制器方法执行
方法:invokeargs美元($控制器参数,美元);
上面的代码可以清楚地看到框架的流程!通过Router,实际上可以处理URL的类,哪个控制器可以通过路由器获得哪种方法!然后再执行该方法!
以上是php反射数据的整理,后续继续补充有关资料,谢谢各位站的支持!