什麼是翻身呢?
在PHP的物件導向程式設計中的物件,它被系統賦予自省的能力,而這個自省的過程,我們把它叫做反射。
在PHP中,反射是指在PHP執行狀態中,擴充套件分析PHP程式,匯出或者提取關於類、屬性、方法、引數等的詳細資訊,包括註釋。這種動態獲取資訊以及動態呼叫物件方法的功能,被稱為反射API。
我們接下來透過一段程式碼來感受一下:
class person{
public $name;
public $age;
public function say()
{
echo $this->name."<br>".$this->age;
}
public function set($name,$value)
{
echo 'set name to value';
$this->$name = $value;
}
public function get($name)
{
if(!isset($this->$name)){
echo 'unset name';
$this->$name = 'seting~~~';
}
return $this->$name;
}
}
$stu = new person();
$stu->name = 'luyaran';
$stu->age = 26;
$stu->sex = 'girl';
上述程式碼是一個簡單的類,我們透過例項化它,以及賦值,讓它有意義。
完事,我們透過反射API獲取這個stu物件的方法和屬性的一個列表:
//獲取物件的屬性列表
$reflect = new ReflectionObject($stu)
$props = $reflect->getProperties();
foreach($props as $key_p=>$value_p){
var_dump($value_p->getName());
}
//獲取物件的方法列表
$method = $reflect->getMethods();
foreach($method as $key_m =>$value_m){
var_dump($value_m->getName());
}
除了反射API之外,我們還可以使用class函式來獲取物件的各種屬性以及方法的資料,如下:
//獲取物件的屬性的關聯陣列
var_dump(get_object_vars($stu));
//獲取類屬性
var_dump(get_class_vars(get_class($stu)));
//獲取類的方法名稱組成的陣列
var_dump(get_class_methods(get_class($stu)))
待續…..
本作品採用《CC 協議》,轉載必須註明作者和本文連結