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.'可以被实现化';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值