PHP 特征检测类或对象
示例
类的特征检测可以部分通过property_existsandmethod_exists函数完成。
class MyClass {
public $public_field;
protected $protected_field;
private $private_field;
static $static_field;
const CONSTANT = 0;
public function public_function() {}
protected function protected_function() {}
private function private_function() {}
static function static_function() {}
}
// 检查属性
$check = property_exists('MyClass', 'public_field'); // 真
$check = property_exists('MyClass', 'protected_field'); // 真
$check = property_exists('MyClass', 'private_field'); // 真, as of PHP 5.3.0
$check = property_exists('MyClass', 'static_field'); // 真
$check = property_exists('MyClass', 'other_field'); // 假
// 检查方法
$check = method_exists('MyClass', 'public_function'); // 真
$check = method_exists('MyClass', 'protected_function'); // 真
$check = method_exists('MyClass', 'private_function'); // 真
$check = method_exists('MyClass', 'static_function'); // 真
// 然而...
$check = property_exists('MyClass', 'CONSTANT'); // 假
$check = property_exists($object, 'CONSTANT'); // 假使用ReflectionClass,还可以检测到常量:
$r = new ReflectionClass('MyClass');
$check = $r->hasProperty('public_field'); // 真
$check = $r->hasMethod('public_function'); // 真
$check = $r->hasConstant('CONSTANT'); // 真
// 也适用于受保护的,私有的和/或静态的成员。注意:对于property_exists和method_exists,还可以提供感兴趣的类的对象代替类名。使用反射,ReflectionObject应使用类代替ReflectionClass。
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短