国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php 的反射詳解及示例代碼

2024-05-04 23:49:22
字體:
來源:轉載
供稿:網友

 最近在看java編程思想,看到類型信息這一章,講到了類的信息以及反射的概念。順便溫故一下php的反射東西。手冊是這樣說的:"PHP 5 具有完整的反射 API,添加了對類、接口、函數、方法和擴展進行反向工程的能力。 此外,反射 API 提供了方法來取出函數、類和方法中的文檔注釋。"當然手冊上說的有些抽象!所謂的逆向說白就是能獲取關于類、方法、屬性、參數等的詳細信息,包括注釋! 文字總是那么枯燥,舉個例子

class Foo {  public  $foo = 1;  protected $bar = 2;  private  $baz = 3;    /**   * Enter description here ...   */  public function myMethod()  {    echo 'hello 2b';  }}$ref = new ReflectionClass('Foo');$props = $ref->getProperties();foreach ($props as $value) {  echo $value->getName()."/n";}//output//foo //bar//baz 

ReflectionClass 這個類返回時某個類的相關的信息,比如 屬性,方法,命名空間,實現那些接口等!上個例子中ReflectionClass:: getProperties 返回是 ReflectionProperty 對象的數組。

ReflectionProperty 類報告了類的屬性的相關信息。比如  isDefault isPrivate  isProtected isPublic isStatic等,方法getName 是獲取屬性的名稱!

以上是獲取屬性的,還有獲取類方法的比如

class Foo {  public  $foo = 1;  protected $bar = 2;  private  $baz = 3;    /**   * Enter description here ...   */  public function myMethod()  {    echo 'hello 2b';  }}$ref = new ReflectionClass('Foo');$method = $ref->getMethod('myMethod');$method->invoke($ref->newInstance());

ReflectionClass::getMethod 是反是一個 ReflectionMethod 類型 ,ReflectionMethod 類報告了一個方法的有關信息,比如 isAbstract isPrivate  isProtected isPublic isStatic   isConstructor,還有一個重要的方法Invoke,InvokeArgs 就是執行方法!

其他的對象可以看看手冊,不是很難!

那反射究竟有哪些用途?

反射是一個動態運行的概念,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性,方法和擴展。還可構建模式,比如動態代理。在一些php框架中使用反射也是很經常,比如kohana,yii,下面是kohana 的實現mvc的代碼,就是用到了反射!

// Start validation of the controller$class = new ReflectionClass(ucfirst(Router::$controller).'_Controller');// Create a new controller instance$controller = $class->newInstance();// Load the controller method$method = $class->getMethod(Router::$method);// Execute the controller method$method->invokeArgs($controller, $arguments);

上面的代碼可以清晰看到這個框架的流程!通過Router 其實就處理url的類,通過Router可以獲取哪個控制器、哪個方法!然后再執行方法!

以上就是對PHP 反射的資料整理,后續繼續補充相關資料,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 金山区| 鲁山县| 凤山市| 阿瓦提县| 通海县| 盖州市| 宁化县| 泊头市| 桑植县| 安新县| 南昌县| 和龙市| 冷水江市| 纳雍县| 黔江区| 望江县| 特克斯县| 泽普县| 金沙县| 绥化市| 兰考县| 泉州市| 永泰县| 柳州市| 望城县| 普宁市| 安达市| 尼勒克县| 龙岩市| 溆浦县| 南岸区| 武威市| 香河县| 沽源县| 陈巴尔虎旗| 安吉县| 平塘县| 伊通| 建德市| 小金县| 准格尔旗|