php 反射
一、通过{属性名} 对对象赋值。
$book=new Book();
$propertyName="name";
$propertyValue="书本名称";
$book->{$propertyName}=$propertyValue;
二、 类的反射使用
参考代码:
class Man{ public $name; protected $age; private $address; public function Say($msg) { echo "Say:".$msg; } } //反射 实例化类 $class=new ReflectionClass('Man'); //获取当前类属性 // 默认获取全部属性 // 仅获取私有属性 $class->getProperties( ReflectionProperty::IS_PRIVATE) /* ReflectionProperty::IS_STATIC ReflectionProperty::IS_PUBLIC ReflectionProperty::IS_PROTECTED ReflectionProperty::IS_PRIVATE * */ foreach( $class->getProperties() as $pro) { echo "属性名称:". $pro->getName() ."<br/>"; } foreach( $class->getMethods() as $method) { echo "方法名称:". $method->getName()."<br/>"; } // 判断方法是否为公开 $method = new ReflectionMethod('Man', 'Say'); print_r($method->isPublic()); //判断类中是否包括该方法 $man=new Man(); if( method_exists($man,"Say")) { echo "Man 存在 Say 方法"; }else{ echo "Man 不存在 Say 方法"; } //反射调用 $reflectionMethod = new ReflectionMethod('Man', 'Say'); $reflectionMethod->invoke($man,"被调用了。");
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。