用來獲取指定的類的資訊,包括類中的屬性,方法,方法許可權,注釋等
用途:1.thinkphp框架中的前置,後置控制器的實現
2.與debug_backtrace函式結合使用,檔案呼叫的許可權管理
使用方法:
1一、通過reflectionclass,我們可以得到person類的以下資訊:<?php
2class
person
2728
public
function setid($v
) 31
32public
function
getname()
3536
public
function setname($v
) 39
40public
function
getbiography()
4344
public
function setbiography($v
) 47 }
常量 contants
屬性 property names
方法 method names靜態
屬性 static properties
命名空間 namespace
person類是否為final或者abstract
person類是否有某個方法
接下來反射它,只要把類名"person"傳遞給reflectionclass就可以了:
1 $class = new reflectionclass('person'); // 建立 person這個類的反射類1)獲取屬性(properties):2 $instance = $class->newinstanceargs($args); // 相當於例項化person 類
1 $properties = $class->getproperties();預設情況下,reflectionclass會獲取到所有的屬性,private 和 protected的也可以。如果只想獲取到private屬性,就要額外傳個引數:2 foreach ($properties as $property)
5 // 輸出:
6 // _allowdynamicattributes
7 // id
8 // name
9 // biography
1 $private_properties = $class->getproperties(reflectionproperty::is_private);可用引數列表:
通過$property->getname()可以得到屬性名。
2)獲取注釋:
通過getdoccomment可以得到寫給property的注釋。
01 foreach ($properties as $property)3)獲取類的方法07 }
08 // output:
09 // primary_autoincrement
10 // varchar
11 // text
4)執行類的方法:
1 $instance->getname(); // 執行person 裡的方法getname二、通過reflectionmethod,我們可以得到person類的某個方法的資訊:2 // 或者:
3 $method = $class->getmethod('getname'); // 獲取person 類中的getname方法
4 $method->invoke($instance); // 執行getname 方法
5 // 或者:
6 $method = $class->getmethod('setname'); // 獲取person 類中的setname方法
7 $method->invokeargs($instance, array('snsgou.com'));
是否「public」、「protected」、「private」 、「static」型別
方法的引數列表
方法的引數個數
反呼叫類的方法
1 // 執行detail方法2 $method = new reflectionmethod('person', 'test');
3
4 if ($method->ispublic() && !$method->isstatic())
7 echo $method->getnumberofparameters(); // 引數個數
8 echo $method->getparameters(); // 引數物件陣列
php反射機制
php5 具有完整的反射api,新增對類 介面 函式 方法和擴充套件進行反向工程的能力。反射是什麼?它是指在php執行狀態中,擴充套件分析php程式,匯出或提取出關於類 方法 屬性 引數等的詳細資訊,包括注釋。這種動態獲取的資訊以及動態呼叫物件的方法的功能稱為反射api。反射是操縱物件導向范型中元模...
php反射機制
php5新增了一項新的功能 reflection,這個功能使得phper可以reverse engineer class,inte ce,function,method and extension,通過php 就可以得到某object的所有資訊,並且可以和它互動。反射是什麼?它是指在php執行狀態中...
PHP反射機制
reflectionclass類 class a public function publicfunction private function privatefunction protected function protectedfunction test方法 public function t...