亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > PHP反射原理與用法深入分析

PHP反射原理與用法深入分析

熱門標簽:德陽中江如何申請400開頭電話 江蘇電商外呼系統運營商 銅川電話機器人價格 青白江地圖標注 聊城電話外呼系統公司 辦理重慶400電話 沛縣400電話辦理 智能電話機器人好公司門薩維 AI電話機器人OEM貼牌

本文實例講述了PHP反射原理與用法。分享給大家供大家參考,具體如下:

說到反射,實際上包含兩個概念:

  • 檢視 introspection 判斷類、方法是否存在,父子類關系,調用關系等,檢視的函數文檔
  • 反射 Reflection 獲取類里的方法、屬性,注釋等,反射類的文檔

PHP官方文檔寫得很清晰了,下面我就說一下具體的應用。

1.參數檢測

有時候需要在函數里需要判斷傳入的參數類型是否合法。
這時可以使用is_a、is_subclass_of來檢測?;蛘呓Y合反射,做更多檢測。

2.動態調用

在依賴注入中,常見到這種用法,比如Laravel5.5中的Container.php

public function build($concrete)
  {
    // If the concrete type is actually a Closure, we will just execute it and
    // hand back the results of the functions, which allows functions to be
    // used as resolvers for more fine-tuned resolution of these objects.
    if ($concrete instanceof Closure) {
      return $concrete($this, $this->getLastParameterOverride());
    }
    $reflector = new ReflectionClass($concrete);
    // If the type is not instantiable, the developer is attempting to resolve
    // an abstract type such as an Interface of Abstract Class and there is
    // no binding registered for the abstractions so we need to bail out.
    if (! $reflector->isInstantiable()) {
      return $this->notInstantiable($concrete);
    }
    $this->buildStack[] = $concrete;
    $constructor = $reflector->getConstructor();
    // If there are no constructors, that means there are no dependencies then
    // we can just resolve the instances of the objects right away, without
    // resolving any other types or dependencies out of these containers.
    if (is_null($constructor)) {
      array_pop($this->buildStack);
      return new $concrete;
    }
    $dependencies = $constructor->getParameters();
    // Once we have all the constructor's parameters we can create each of the
    // dependency instances and then use the reflection instances to make a
    // new instance of this class, injecting the created dependencies in.
    $instances = $this->resolveDependencies(
      $dependencies
    );
    array_pop($this->buildStack);
    return $reflector->newInstanceArgs($instances);
  }

上述代碼先判斷是否是閉包,如果是,直接返回。不是則通過new ReflectionClass($concrete);

生成反射類的實例,然后獲取這個類的構造函數和參數,進行初始化的過程。

注意

反射里一個比較重要的用法invoke

當已知這個類的時候,可以通過構造ReflectionMethod來直接調用,如:

class HelloWorld {

  public function sayHelloTo($name) {
    return 'Hello ' . $name;
  }

}

$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invoke(new HelloWorld(), 'Mike');

當不知道這個類時,知道類的對象,可以用ReflectionObject獲取ReflectionMethod后調用,如:

class HelloWorld {

  public function sayHelloTo($name) {
    return 'Hello ' . $name;
  }

}

$hello = new HelloWorld();

$refObj = new ReflectionObject($hello);
$refMethod = $refObj->getMethod('sayHelloTo');
echo $refMethod->invoke($hello,'Mike');

調用流程一般就是獲取反射類ReflectionClass/反射對象ReflectionObject的實例,然后獲取ReflectionMethod后,invoke。

3.獲取注釋,生成文檔

比如PHPDoc

4.注解,增強版的注釋,符合一定的規則

比如某些框架的路由,便是通過注解實現的。

5.不要為了反射而反射

PHP是一門動態語言,其實可以直接通過字符串來調用類或函數,如下:

class HelloWorld {
  public function sayHelloTo($name) {
    return 'Hello ' . $name;
  }
}
$hello = 'HelloWorld';
$helloSay = 'sayHelloTo';
$helloIntance = new $hello;
echo $helloIntance->$helloSay('Mike');

那么為什么還需要反射呢?

  • 功能更強大
  • 更安全,防止直接調用沒有暴露的內部方法
  • 可維護,直接寫字符串是硬編碼

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP的反射動態獲取類方法、屬性、參數操作示例
  • php面試實現反射注入的詳細方法
  • php提供實現反射的方法和實例代碼
  • PHP進階學習之反射基本概念與用法分析
  • php反射學習之不用new方法實例化類操作示例
  • PHP反射學習入門示例
  • PHP反射實際應用示例
  • 用PHP的反射實現委托模式的講解
  • 淺析PHP類的反射來實現依賴注入過程
  • PHP基于反射機制實現自動依賴注入的方法詳解
  • PHP基于反射獲取一個類中所有的方法
  • PHP反射基礎知識回顧

標簽:三亞 烏魯木齊 濟寧 鷹潭 赤峰 南寧 迪慶 山南

巨人網絡通訊聲明:本文標題《PHP反射原理與用法深入分析》,本文關鍵詞  PHP,反射,原理,與,用法,深入分析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP反射原理與用法深入分析》相關的同類信息!
  • 本頁收集關于PHP反射原理與用法深入分析的相關信息資訊供網民參考!
  • 推薦文章
    久久精品欧美一区二区| 亚久久伊人精品青青草原2020| 成人免费网站视频ww| 一级女性大黄生活片免费| 国产亚洲精品aaa大片| 国产亚洲精品成人a在线| 久久国产一区二区| 久久国产一久久高清| 成人免费福利片在线观看| 精品国产一区二区三区精东影业| 日日夜夜婷婷| 国产伦精品一区三区视频| 韩国三级香港三级日本三级la| 亚洲精品影院| 深夜做爰性大片中文| 精品国产亚一区二区三区| 精品国产三级a| 亚洲第一色在线| 国产一级生活片| 国产不卡高清| 国产视频一区二区在线观看| 久草免费在线观看| 青青青草影院 | 99久久精品国产免费| 国产成a人片在线观看视频| 国产一区国产二区国产三区| 日日夜人人澡人人澡人人看免| 99久久精品国产高清一区二区| 精品视频免费在线| 一级毛片看真人在线视频| 国产不卡福利| 青青青草影院 | 国产一区二区精品久久91| 日韩欧美一二三区| 亚洲第一色在线| 亚飞与亚基在线观看| 91麻豆爱豆果冻天美星空| 国产一区二区精品久久| 亚洲 激情| 欧美a免费| 久久精品店| 亚洲 激情| 欧美18性精品| 欧美大片a一级毛片视频| 精品国产三级a∨在线观看| 黄视频网站免费看| 高清一级做a爱过程不卡视频| 九九免费精品视频| 91麻豆精品国产自产在线| 午夜久久网| 韩国三级视频网站| 国产91精品一区| 国产高清在线精品一区二区| 九九久久99| 欧美日本韩国| 久久国产精品只做精品| 久久国产一区二区| 99热精品一区| 夜夜操网| 日本免费看视频| 亚洲女人国产香蕉久久精品| 九九精品影院| 成人影院久久久久久影院| 久久久久久久男人的天堂| 日日夜人人澡人人澡人人看免| 国产韩国精品一区二区三区| 亚洲爆爽| 九九久久99| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 九九久久99| 四虎影视库| 国产激情一区二区三区| 日韩中文字幕在线亚洲一区 | 欧美激情一区二区三区在线播放 | 国产不卡高清| 久久精品道一区二区三区| 一本高清在线| 香蕉视频久久| 一级女人毛片人一女人| 日韩av成人| 天天做日日爱| 久久久久久久久综合影视网| 久久国产精品永久免费网站| 一级女性全黄久久生活片| 国产一区免费在线观看| 99久久精品国产免费| 999久久狠狠免费精品| 日韩男人天堂| 午夜激情视频在线播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产成a人片在线观看视频| 精品视频在线观看一区二区三区| 免费的黄视频| 精品国产一区二区三区国产馆| 日本免费看视频| 欧美日本韩国| 成人免费观看男女羞羞视频| a级毛片免费全部播放| 黄视频网站在线看| 毛片成人永久免费视频| 成人影视在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久精品大片| 日韩欧美一二三区| 欧美国产日韩在线| 国产91精品一区二区| 青青久久精品| 国产视频久久久| 可以免费看污视频的网站| 亚久久伊人精品青青草原2020| 国产不卡福利| 成人av在线播放| 尤物视频网站在线| 99久久精品国产免费| 999久久狠狠免费精品| 午夜激情视频在线播放| 精品视频免费看| 999精品视频在线| 国产a毛片| 久久精品道一区二区三区| 亚洲 欧美 成人日韩| 日日夜夜婷婷| 国产伦久视频免费观看 视频| 国产美女在线一区二区三区| 久久国产精品自由自在| 免费国产一级特黄aa大片在线| 精品国产一区二区三区免费 | 韩国三级视频网站| 国产精品自拍亚洲| 国产成人精品影视| 亚洲精品久久玖玖玖玖| 成人影视在线观看| 国产一区精品| 人人干人人草| 久久久成人网| 亚洲爆爽| 可以在线看黄的网站| 国产一区二区精品久久91| 国产成人女人在线视频观看| 精品毛片视频| 九九精品影院| 日本伦理黄色大片在线观看网站| 日日夜人人澡人人澡人人看免| 美女被草网站| 亚洲爆爽| 日日爽天天| 精品视频在线看| 四虎影视久久| 成人免费观看的视频黄页| 精品视频在线观看免费| 国产精品1024永久免费视频| 毛片成人永久免费视频| 欧美a免费| 日本在线播放一区| 久久国产影院| 国产91素人搭讪系列天堂| 精品视频免费看| 久草免费在线色站| 国产麻豆精品hdvideoss| 国产一区免费在线观看| 免费毛片基地| 国产亚洲免费观看| 黄色短视频网站| 久久国产一区二区| 欧美一级视频高清片| 国产国语对白一级毛片| 久久久成人网| 国产网站免费视频| 韩国毛片免费| 黄色免费三级| 日本在线播放一区| 日韩一级黄色| 91麻豆精品国产综合久久久| 欧美大片毛片aaa免费看| 黄视频网站在线免费观看| 午夜在线影院| 美女被草网站| 可以免费看污视频的网站| 国产视频在线免费观看| 国产高清在线精品一区a| 青青久久网| 亚欧成人毛片一区二区三区四区 | 欧美爱爱网| 欧美a免费| 久久久成人网| 九九精品久久| 久久国产一久久高清| 韩国三级视频在线观看| 久久成人综合网| 成人高清视频在线观看| 91麻豆国产| 精品国产亚洲一区二区三区| 久久福利影视| 国产一区二区精品在线观看| 亚欧乱色一区二区三区| 精品在线观看国产| 精品久久久久久中文字幕2017| 高清一级片| 日韩中文字幕一区二区不卡| 精品久久久久久中文字幕2017|