最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php 的反射詳解及示例代碼

 更新時(shí)間:2016年08月25日 15:44:03   作者:撣塵  
本文主要介紹PHP的反射內(nèi)容的知識(shí),這里提供相關(guān)的資料講解,及簡單示例代碼供大家參考,有興趣的小伙伴可以參考下

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

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 這個(gè)類返回時(shí)某個(gè)類的相關(guān)的信息,比如 屬性,方法,命名空間,實(shí)現(xiàn)那些接口等!上個(gè)例子中ReflectionClass:: getProperties 返回是 ReflectionProperty 對(duì)象的數(shù)組。

ReflectionProperty 類報(bào)告了類的屬性的相關(guān)信息。比如  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 是反是一個(gè) ReflectionMethod 類型 ,ReflectionMethod 類報(bào)告了一個(gè)方法的有關(guān)信息,比如 isAbstract isPrivate  isProtected isPublic isStatic   isConstructor,還有一個(gè)重要的方法Invoke,InvokeArgs 就是執(zhí)行方法!

其他的對(duì)象可以看看手冊(cè),不是很難!

那反射究竟有哪些用途?

反射是一個(gè)動(dòng)態(tài)運(yùn)行的概念,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性,方法和擴(kuò)展。還可構(gòu)建模式,比如動(dòng)態(tài)代理。在一些php框架中使用反射也是很經(jīng)常,比如kohana,yii,下面是kohana 的實(shí)現(xiàn)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);

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

以上就是對(duì)PHP 反射的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • PHP網(wǎng)頁游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(六)

    PHP網(wǎng)頁游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(六)

    這篇文章主要介紹了PHP網(wǎng)頁游戲Xnova(ogame)源碼解讀的公共代碼,需要的朋友可以參考下
    2014-06-06
  • 使用PHPMailer發(fā)送郵件實(shí)例

    使用PHPMailer發(fā)送郵件實(shí)例

    這篇文章為大家詳細(xì)主要介紹了使用PHPMailer發(fā)送郵件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • WordPress中縮略圖的使用以及相關(guān)技巧

    WordPress中縮略圖的使用以及相關(guān)技巧

    這篇文章主要介紹了WordPress中縮略圖的使用以及相關(guān)技巧,包括調(diào)用文章的第一個(gè)圖片以及設(shè)置特征圖片等手段,需要的朋友可以參考下
    2015-11-11
  • Laravel5.7 Eloquent ORM快速入門詳解

    Laravel5.7 Eloquent ORM快速入門詳解

    這篇文章主要介紹了Laravel5.7 Eloquent ORM快速入門詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • 解析PHP之提取多維數(shù)組指定列的方法

    解析PHP之提取多維數(shù)組指定列的方法

    這篇文章主要介紹了解析PHP之提取多維數(shù)組指定列的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • tp5.1 框架查詢表達(dá)式用法詳解

    tp5.1 框架查詢表達(dá)式用法詳解

    這篇文章主要介紹了tp5.1 框架查詢表達(dá)式用法,結(jié)合實(shí)例形式詳細(xì)分析了tp5.1 框架常用查詢表達(dá)式功能、定義、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • apache php mysql開發(fā)環(huán)境安裝教程

    apache php mysql開發(fā)環(huán)境安裝教程

    這篇文章主要為大家詳細(xì)介紹了apache php mysql開發(fā)環(huán)境安裝教程,感興趣的小伙伴們可以參考一下
    2016-07-07
  • php優(yōu)化查詢foreach代碼實(shí)例講解

    php優(yōu)化查詢foreach代碼實(shí)例講解

    這篇文章主要介紹了php優(yōu)化查詢foreach代碼實(shí)例講解,列舉了代碼實(shí)例和測(cè)試結(jié)果,有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • PHP的mysqli_ssl_set()函數(shù)講解

    PHP的mysqli_ssl_set()函數(shù)講解

    今天小編就為大家分享一篇關(guān)于PHP的mysqli_ssl_set()函數(shù)講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • php獲取目錄下所有文件及目錄(多種方法)(推薦)

    php獲取目錄下所有文件及目錄(多種方法)(推薦)

    這篇文章主要介紹了php獲取目錄下所有文件及目錄多種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

霍邱县| 大新县| 江孜县| 潜江市| 聂拉木县| 太湖县| 天镇县| 景泰县| 衡阳市| 富阳市| 桂平市| 涞源县| 富裕县| 响水县| 西丰县| 吉安县| 闵行区| 毕节市| 定西市| 营山县| 琼海市| 古交市| 青铜峡市| 黄骅市| 阜康市| 大港区| 连平县| 南康市| 青河县| 广安市| 阳高县| 潍坊市| 昌江| 雅江县| 额济纳旗| 泸定县| 广南县| 清河县| 博野县| 海盐县| 海门市|