亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP進階學習之反射基本概念與用法分析

2024-05-05 00:09:43
字體:
來源:轉載
供稿:網友

本文實例講述了PHP進階學習之反射基本概念與用法。分享給大家供大家參考,具體如下:

一、前言

Reflection(反射)是Java程序開發語言的特征之一,它允許運行中的Java程序對自身進行檢查,或者說“自審”,并能直接操作程序的內部屬性。這一特征在實際應用中也許用得不是很多。

PHP從5.0開始完美支持反射API。PHP反射可以用于觀察并修改程序在運行時的行為。一個面向反射的(reflection-oriented)程序組件可以監測一個范圍內的代碼執行情況,可以根據期望的目標與此相關的范圍修改本身。PHP5具有完整的反射API,添加了對類、接口、函數、方法和擴展進行反向工程的能力。

二、概念

反射是指在PHP運行狀態中,擴展分析PHP程序,導出或提出關于類、方法、屬性、參數等的詳細信息,包括注釋。這種動態獲取信息以及動態調用對象方法的功能稱為反射API。

三、PHP反射的基本語法

實現反射的方法有很多,可以通過實例化一個專門控制類的ReflectionClass類來實現反射,也可以在已有類實例的情況下,通過直接實例化ReflectionMethod類來執行反射方法,原理如圖:

PHP,反射

PHP,反射

以下是對反射類和反射方法類的基本用法:

1、反射類

(1) $reflectClass = new ReflectionClass(<類名>);

傳入類名字符串,返回控制目標類的ReflectionClass類實例;

(2) $reflectClass->getConstant(<常量名>);

傳入類中定義了的常量名,返回常量值,可通過$reflectClass->getConstants返回類中所有定義的常量的數組;

(3) $class = $reflectClass->newInstance();

實例化類,返回目標類實例;也可通過$reflectClass->newInstanceArgs(<參數數組>)傳入實例化的構造函數參數進行實例化;

2、反射方法

(1) $reflectMethod = new ReflectionMethod(<方法名>);

傳入方法名名字符串,返回控制目標方法的ReflectionMethod類實例;

(2) $parameters = $reflectMethod->getParameters();

獲取該類所需的參數名,該方法返回一個包含所有參數名的二維數組;

(3) $name = $parameters->getName();

返回要執行的方法所需參數數組的單個參數名,可通過foreach循環逐一獲取和賦值;

(4) $reflectMethod->invokeArgs(<類實例>,<執行該方法所需參數數組>);

傳入類實例和方法參數,執行方法,返回執行結果。

3、反射類和反射方法中其他常用的用法:

ReflectionClass:

PHP,反射

ReflectionMethod:

PHP,反射

4、除了ReflectionClass和ReflectionMethod,我們對于類中的參數、屬性和php服務的環境變量、擴展等參數也是可以通過反射API的一些方法來執行的,如下:

PHP,反射

四、反射在實際應用中的使用

1、反射可以用于文檔、文件生成。可以用它對文件里的類進行掃描,逐個生成描述文檔;
2、既然反射可以探知類的內部結構,那么可以用它做hook實現插件功能;
3、可以用于做動態代理,在未知或者不確定類名的情況下,動態生成和實例化一些類和執行方法;
4、對于多次繼承的類,我們可以通過多次反射探索到基類的結構,或者采用遞歸的形式反射,實現實例化所有繼承類,這即是PHP依賴注入的原理。

五、PHP反射的優缺點

優點

1、支持反射的語言提供了一些在低級語言中難以實現的運行時特性。
2、可以在一定程度上避免硬編碼,提供靈活性和通用性。
3、可以作為一個第一類對象發現并修改源代碼的結構(如代碼塊、類、方法、協議等)。
4、可以在運行時像對待源代碼語句一樣計算符號語法的字符串(類似JavaScript的eval()函數),進而可將跟class或function匹配的字符串轉換成class或function的調用或引用。
5、可以創建一個新的語言字節碼解釋器來給編程結構一個新的意義或用途。

劣勢

1、此技術的學習成本高。面向反射的編程需要較多的高級知識,包括框架、關系映射和對象交互,以利用更通用的代碼執行。
2、同樣因為反射的概念和語法都比較抽象,過多地濫用反射技術會使得代碼難以被其他人讀懂,不利于合作與交流。
3、由于將部分信息檢查工作從編譯期推遲到了運行期,此舉在提高了代碼靈活性的同時,犧牲了一點點運行效率
4、通過深入學習反射的特性和技巧,它的劣勢可以盡量避免,但這需要許多時間和經驗的積累。

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


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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色伦专区97中文字幕| 中文日韩在线观看| 成人97在线观看视频| 亚洲成av人影院在线观看| 免费91在线视频| 国产成人极品视频| 欧美精品免费在线观看| 亚洲综合国产精品| 欧美日韩在线第一页| 日韩在线视频观看正片免费网站| 亚洲国产精品人人爽夜夜爽| 亚洲最新在线视频| 亚洲最大福利视频网站| 欧美日韩久久久久| 国产精品va在线播放我和闺蜜| 亲爱的老师9免费观看全集电视剧| 亚洲一区二区三区在线免费观看| 午夜精品久久久久久99热软件| 欧美精品久久久久久久| 亚洲一区中文字幕在线观看| 麻豆精品精华液| 欧美精品电影免费在线观看| 午夜免费久久久久| 日本国产精品视频| 精品久久久久久久久久久久久| 国产91在线视频| 在线电影欧美日韩一区二区私密| 久久视频精品在线| 欧美黑人极品猛少妇色xxxxx| 亚洲天堂av在线播放| 亚洲影院色在线观看免费| 国产精品久久久久久久一区探花| 日韩电影大片中文字幕| 精品国产91乱高清在线观看| 亚州成人av在线| 国产美女精品免费电影| 成人在线播放av| 亚洲成人xxx| 人人做人人澡人人爽欧美| 久久久久久欧美| 国产精品扒开腿做爽爽爽的视频| 黑人精品xxx一区| 高清一区二区三区四区五区| 在线成人一区二区| 国产精品美乳一区二区免费| 日韩三级影视基地| 亚洲国产成人在线视频| 日韩精品小视频| 欧美在线亚洲在线| 国语对白做受69| 日韩欧美亚洲国产一区| 国产精品美女在线| 欧美孕妇毛茸茸xxxx| 98视频在线噜噜噜国产| 国产精品偷伦免费视频观看的| 一区二区在线免费视频| 亚洲一级黄色片| 亚洲人成绝费网站色www| 亚洲久久久久久久久久久| 亚洲一级免费视频| 日本精品一区二区三区在线播放视频| 日韩一区视频在线| 中文字幕亚洲精品| 欧美成人在线免费视频| 一本大道香蕉久在线播放29| 欧美中文在线字幕| 国产小视频国产精品| 国产精品久久久久av免费| 日本精品久久电影| 日韩中文在线观看| 亚洲视频日韩精品| 国产精品白丝jk喷水视频一区| 欧美日韩在线观看视频小说| 日韩视频精品在线| 91欧美精品午夜性色福利在线| 精品福利在线视频| 亚洲欧美日韩一区在线| 久久久久久97| 亚洲第一男人天堂| 中文字幕精品久久久久| 久久免费视频网站| 红桃视频成人在线观看| 精品综合久久久久久97| 欧美日韩国产影院| 色婷婷综合成人| 992tv在线成人免费观看| 国产一区二区三区精品久久久| 亚洲成人久久久久| 久久久噜噜噜久久| 欧美成人精品xxx| 欧美激情视频在线观看| 国产一区二区成人| 日本精品免费一区二区三区| 岛国av午夜精品| 成人国内精品久久久久一区| 亚洲国产精品人人爽夜夜爽| 亚洲欧美日本精品| 日韩视频在线免费观看| 久久精品2019中文字幕| 日韩一中文字幕| 一本一道久久a久久精品逆3p| 国产精品亚洲综合天堂夜夜| 国产美女精品视频| 成人性生交xxxxx网站| 国产美女主播一区| 亚洲国产精品成人va在线观看| 亚洲色图五月天| 亚洲一区二区免费在线| 国产suv精品一区二区| 国产一区二区三区视频| 成人免费直播live| 日本一区二区在线播放| 一区二区三区视频在线| 国产成人aa精品一区在线播放| 欧美日韩国产丝袜另类| 国产成人精品综合| 欧美福利小视频| 美女久久久久久久久久久| 久久久亚洲精品视频| 亚洲午夜激情免费视频| 久久久精品网站| 91在线精品视频| 成人a免费视频| 国产欧美久久久久久| 久久久国产影院| 91精品视频在线免费观看| 韩日欧美一区二区| 亚洲人成五月天| 91超碰中文字幕久久精品| 欧美日韩亚洲天堂| 国产精品主播视频| 66m—66摸成人免费视频| 中文字幕国产日韩| 国产丝袜精品第一页| 8090成年在线看片午夜| 热re91久久精品国99热蜜臀| 欧美怡红院视频一区二区三区| 欧美精品videossex性护士| 一区二区欧美激情| 欧洲成人性视频| 国产深夜精品福利| 国产日韩欧美日韩大片| 国产精品观看在线亚洲人成网| 日韩精品日韩在线观看| 日韩亚洲欧美中文在线| 日韩有码视频在线| 日韩在线欧美在线国产在线| 色爱av美腿丝袜综合粉嫩av| 在线视频免费一区二区| 国产亚洲精品综合一区91| 91精品久久久久久久久不口人| 欧美激情视频三区| 午夜精品三级视频福利| 久久久成人av| 欧美日韩国产在线看| 欧美日韩亚洲91| 亚洲第一精品自拍| 国产精品美腿一区在线看| 久久精品亚洲94久久精品| 在线免费观看羞羞视频一区二区| 国产精品欧美久久久| 日韩暖暖在线视频| 亚洲福利在线视频| 伊人久久大香线蕉av一区二区|