class Person { /** * For the sake of demonstration, we"re setting this private */ private $_allowDynamicAttributes = false; /** type=primary_autoincrement */ protected $id = 0; /** type=varchar length=255 null */ protected $name; /** type=text null */ protected $biography; public $public; public function getId() { return $this->id; } public function setId($v) { $this->id = $v; } public function getName() { return $this->name; } public function setName($v='d') { echo $v; $this->name = $v; } protected function setName1($v1=""){ echo "protected:".$v1; } private function setName2($v1=""){ echo "private:".$v1; } static function setName3($v='d') { echo "static:".$v; } public function getBiography() { return $this->biography; } public function setBiography($v) { $this->biography = $v; } private function privateTest(){ echo "privateTest"; } protected function protectedTest($string){ echo $string.'<br/>'; echo "protectedTest"; } } //ReflectionClass::export('person'); // 打印类中的信息 $class = new ReflectionClass('Person');//建立 Person这个类的反射类 $instance = $class->newInstanceArgs( );//相当于实例化Person 类 $properties = $class->getProperties();//获取该类所有属性信息 foreach($properties as $property) { echo $property->getName()."<br/>"; } $Methods = $class->getMethods(); //获取该类的方法信息 foreach($Methods as $property) { echo $property->getName()."<br/>"; } $ec = $class->getMethod('setName');//执行Person的setName方法 $ec->invoke($instance,'ssss'); //传入参数 sss $ec1 = $class->getMethod('setName1');//执行Person的setName方法 $ec1->invoke($instance,'ssss'); //传入参数 sss 调用失败 $ec2 = $class->getMethod('setName2');//执行Person的setName方法 $ec2->setAccessible(true); //设置权限即可访问静态方法 $ec2->invoke($instance,'ssss'); //传入参数 sss 调用失败! $ec3 = $class->getMethod('setName3');//执行Person的setName方法 $ec3->invoke($instance,'ssss'); //传入参数 sss ReflectionMethod::export('Person', 'protectedTest');//打印方法信息 $method = new ReflectionMethod('Person', 'protectedTest'); // 调用某个类的某个方法 echo $method->invoke(new person(), 'echo protectedTest'); //第一个参数为对象,第二个参数为方法中的参数。。
PHP反射demo
最新推荐文章于 2025-12-09 16:29:53 发布
2316

被折叠的 条评论
为什么被折叠?



