初見PHP反射

2021-06-28 11:01:51 字數 1787 閱讀 9213

什麼是反射?指在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執行狀態中...