php反射
反射(reflection) 提供了很多类,可以在运行时访问对象、函数和脚本中的扩展信息。
由于反射API非常强大,应该尽量使用反射API,而少用类和对象函数。
ReflectionClass提供提示给定类所有信息的方法,无论这个类是用户定义的还是PHP自带的内置类。 ReflectionClass的构造方法接受类名作为它的唯一参数 (简单地说,这个这个类,可以输出某个类,包括内置类和用户自定义的类的全部信息,包括属性和方法 ) , 如
$m=new ReflectionClass('Memcache');
Reflection::export($m); // export 是个静态方法
注意是 Reflection类的静态方法,而不是 ReflectionClass的
var_dump()和它的姐妹函数print_r() 是检查PHP代码中数据据的利器,但对于类和函数,反射API提供了更高层次的功能。
2、查询类:
ReflectionClass::getName() 返回要检查的类名
ReflectionClass::isuserDefined() 检查这个类是否是用户定义的类,是返回true,否则返回false
ReflectionClass::isInternal() 检查这个类是否是内置的。与上面相反
ReflectionClass::isFinal() 检查这个类是否可以被继承
ReflectionClass::isAbstract() 检查这个类是否是抽象类
ReflectionClass::isInterface() 检查某个类是否是接口
ReflectionClass::isInstantiable() 测试某个类是否可产生实例
ReflectionClass::getMethods() 获取对象的所有方法,以数组的形式返回
ReflectionClass::getFileName() 获取类所在的文件,包括绝对路径
ReflectionClass::getStartLine() 获取类的开始行
ReflectionClass::getEndLine() 获取类的结束行
例1:
<?php
echo '<pre>';
$r=new ReflectionClass('Memcache');
Reflection::export($r);
echo '<hr/>';
$methods=$r->getMethods();
print_r($methods);
echo '<hr/>';
$className=$r->getName();
if($r->isUserDefined()){
echo $className.'是用户定义的类';
}
if($r->isInternal()){
echo $className.'是内置类';
}
if($r->isFinal()){
echo $className.'是最终类,不被有子类';
}
if($r->isAbstract()){
echo $className.'是抽象类';
}
if($r->isInterface()){
echo $className.'是接口';
}
if($r->isInstantiable()){
echo $className.'可以被实现化';
}
在不人为查看类的情况下。也可以获得类或者某个方法的源代码,有点意思
=======================================================================================
3、检查方法
ReflectionMethod对象可以用来检查类中的方法
==========================================================================================
PHP7.0~PHP7.1~PHP7.2~PHP7.3~PHP7.4新特性php 7.4
PHP7.0~PHP7.1~PHP7.2~PHP7.3~PHP7.4新特性php 7.2 7.3
PHP之——在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)支持。wampserver打开php项目
PHP之——在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)支持。wampserver开发php网页
PHP配置指令作用域说明(PHP,INI,PERDIR、PHP,INI,SYSTEM、PHP,INI,USER、PHP,INI,ALL)php 作用域
PHP - 什么是 PHP? 为什么用 PHP? 有谁在用 PHP?为什么说php
[PHP] PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1)php性能测试
[PHP问题]PHP Warning: PHP Startup: Unable to load dynamic library ‘C:/AppServ\php5php基础问题