代碼,還以以前介紹Java反射的Worker類爲例php
worker.php:html
<?php class Worker{ //工人的一些屬性 private $name_; private $age_; private $salary_; //構造方法 public function __construct($name,$age,$salary){ $this->name_ = $name; $this->age_ = $age; $this->salary_ = $salary; } //輸出工人信息的方法 public function show(){ echo "年齡".$this->salary_; echo "姓名".$this->name_; echo "工資".$this->salary_; } //__toString方法 public function __toString(){ return "年齡:".$this->age.",姓名:".$this->name."工資:".$this->salary; } }
下面能夠經過反射機制獲取類的信息
注 getObjectOfRuntimeClass.php 該文件和worker.php 在一個文件夾下框架
<?php include 'worker.php'; //經過類名獲取 $workClass_by_classname = new ReflectionClass('Worker'); //經過類的實例對象獲取 $w = new Worker("小明",20,20); $workerClass_by_classinstance = new ReflectionObject($w); //由於ReflectionObject是ReflectionClass的子類,因此workClass_by_classname的方法,workerClass_by_classinstance一樣適用 //下面利用workClass_by_classname對象獲取類的一些屬性 //獲取類名 echo $workClass_by_classname->getName(); //獲取類的方法列表 var_dump($workClass_by_classname->getMethods()); //獲取類的屬性 var_dump($workClass_by_classname->getProperties()); //利用反射獲得方法,並執行該方法 $worker = $workClass_by_classname->newInstance("小明",20,20); $show_method = new ReflectionMethod('Worker','show'); $show_method->invoke($worker); //利用反射機制獲得屬性,並設置值 $property = $workClass_by_classname->getProperty('name_'); $property->setAccessible(true); var_dump($property->getValue($worker)); $property->setValue($worker ,'小紅'); var_dump($property->getValue($worker));
除了這些外,PHP反射還有其餘的功能,具體可參考PHP手冊的反射部分
如需轉載請註明出處:http://www.cnblogs.com/zhuchenglin/p/8890451.html函數