什麼是反射?指在php執行狀態中,擴充套件分析php程式,匯出或提取出關於這個類的方法、屬性、引數、注釋等資訊。通俗來說就是獲取該類的資訊,至於你要獲取來幹嘛,這個就看你自己的需求了。下面是乙個小例子:
class test
public function del()
public function __set($name,$value)
public function __get($name)else }}
$obj = new test();
$obj->name = 'lu';
$obj->age = 5;
//reflection 反射類
//以物件作為反射的物件
$res = new reflectionobject($obj);
//以類作為反射的物件 兩個效果相同
//$res = new reflectionclass('test');
//獲取$obj物件的一組屬性,返回乙個陣列 裡面包含 屬性名 和 所屬類
$p = $res->getproperties();
//var_dump($p);
$m = $res->getmethods();
//var_dump($m);
array(2)[1]=>
&object(reflectionproperty)#3 (2)
}
array(4) [1]=>
&object(reflectionmethod)#6 (2) [2]=>
&object(reflectionmethod)#7 (2) [3]=>
&object(reflectionmethod)#8 (2) }
甚至還可以獲取該類的原型:$obj = new reflectionclass('test');
//獲取類名
$class_name = $obj->getname();
$m = array();
$p = array();
//獲取該類的屬性 返回乙個陣列物件 我們把它遍歷出來
foreach($obj->getproperties() as $v)
/*array(2)
["age"]=>
object(reflectionproperty)#3 (2) }*/
//獲取方法
foreach($obj->getmethods() as $v)
/*array(4)
["del"]=>
object(reflectionmethod)#5 (2)
["__set"]=>
object(reflectionmethod)#6 (2)
["__get"]=>
object(reflectionmethod)#7 (2) }*/
//拼湊字串 組成類的形式
echo "class \n\n";
}echo "\n";
is_array($m)&&ksort($m);
foreach($m as $k => $v)(){}\n";
}echo "}\n";
效果:
class test
function __set(){}
function del(){}
function show(){}
}
php反射函式
最常用的幾個個php反射函式 get class get class methods 1.get class 返回物件的類名 string get class object obj 返回物件例項 obj 所屬類的名字。如果 obj 不是乙個物件則返回false。note 在 php 擴充套件庫中定義...
php反射機制
php5 具有完整的反射api,新增對類 介面 函式 方法和擴充套件進行反向工程的能力。反射是什麼?它是指在php執行狀態中,擴充套件分析php程式,匯出或提取出關於類 方法 屬性 引數等的詳細資訊,包括注釋。這種動態獲取的資訊以及動態呼叫物件的方法的功能稱為反射api。反射是操縱物件導向范型中元模...
php反射機制
php5新增了一項新的功能 reflection,這個功能使得phper可以reverse engineer class,inte ce,function,method and extension,通過php 就可以得到某object的所有資訊,並且可以和它互動。反射是什麼?它是指在php執行狀態中...