廣州學(xué)習(xí)php怎么樣?
發(fā)布時(shí)間:2019-09-05 廣州天琥教育 訪問(wèn) : 297面對(duì)面定向的三個(gè)主要特征:封裝、繼承和多態(tài)性。首先,對(duì)抽象的簡(jiǎn)單理解:
當(dāng)我們之前定義一個(gè)類時(shí),我們實(shí)際上提取了一類事物的共同屬性和行為,以形成一個(gè)物理模型(模板)。這種研究問(wèn)題的方法叫做抽象。廣州學(xué)習(xí)php怎么樣?
一.導(dǎo)言
反射是Java程序開(kāi)發(fā)語(yǔ)言的特征之一。它允許運(yùn)行的Java程序自我檢查,或者“自我檢查”,并且可以直接操作程序的內(nèi)部屬性。這一特性可能不會(huì)在實(shí)際應(yīng)用中廣泛使用。
PHP完全支持從5.0開(kāi)始的反射應(yīng)用編程接口。PHP反射可以用來(lái)在運(yùn)行時(shí)觀察和修改程序的行為。面向反射的程序組件可以監(jiān)視一個(gè)范圍內(nèi)代碼的執(zhí)行,并且可以根據(jù)期望的目標(biāo)和相關(guān)的范圍修改自己。PHP5有一個(gè)完整的反射應(yīng)用編程接口,增加了逆向工程類、接口、函數(shù)、方法和擴(kuò)展的能力。
二.概念
反射是指擴(kuò)展和分析PHP程序,導(dǎo)出或呈現(xiàn)關(guān)于類、方法、屬性、參數(shù)等的詳細(xì)信息。,包括注釋。這種動(dòng)態(tài)獲取信息和動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱為反射應(yīng)用編程接口。
三,PHP反射的基本語(yǔ)法
實(shí)現(xiàn)反射的方法有很多,可以通過(guò)實(shí)例化專門(mén)控制類的ReflectionClass類來(lái)實(shí)現(xiàn),或者在現(xiàn)有類實(shí)例的情況下直接實(shí)例化ReflectionMethod類來(lái)實(shí)現(xiàn)。原則如下:
以下是反射類和反射方法類的基本用法:
1.反思類
(1) $reflectClass =新的ReflectionCLaSS();
傳入類名字符串并返回控制目標(biāo)類的ReflectionClass類實(shí)例;
(2)$ ReflectClass-> GetConstant();
傳入類中定義的常量名稱返回常量值,類中所有定義的常量數(shù)組可以通過(guò)$ reflex類-> getconstants返回;
(3)$ class = $ ReflectClass-> NewInstance();
實(shí)例化類并返回目標(biāo)類實(shí)例;您還可以通過(guò)將$reflectClass->newInstanceArgs()傳遞到實(shí)例化的構(gòu)造函數(shù)參數(shù)中來(lái)實(shí)例化它;
2.反射式探傷法
(1) $reflectMethod =新的ReflectionMethod();
傳入方法名稱字符串,返回控制目標(biāo)方法的ReflectionMethod類的實(shí)例;
(2)$ parameters = $ ReflectMethod-> GetParameters();
獲取類所需的參數(shù)名,方法返回包含所有參數(shù)名的二維數(shù)組;
(3)$ name = $ parameters-> GetName();
返回要執(zhí)行的方法所需的參數(shù)數(shù)組的單個(gè)參數(shù)名,可以通過(guò)foreach循環(huán)一個(gè)接一個(gè)地獲取和分配;
(4)$反射方法->調(diào)用參數(shù)(,);
傳入類實(shí)例和方法參數(shù),執(zhí)行方法,并返回執(zhí)行結(jié)果。
3、反射類和反射方法中其他常用的用法:
ReflectionClass:
反射方法:
4.除了反射類(ReflectionClass)和反射方法(ReflectionMethod),我們還可以使用反射API的一些方法來(lái)實(shí)現(xiàn)類、環(huán)境變量和php服務(wù)擴(kuò)展中的參數(shù)和屬性,如下所示:
四.反射在實(shí)際應(yīng)用中的應(yīng)用
1.反射可用于生成文檔和文件。它可以用來(lái)掃描文件中的類,并逐個(gè)生成描述文檔。
2.因?yàn)榉瓷淇梢詸z測(cè)類的內(nèi)部結(jié)構(gòu),所以它可以用作鉤子來(lái)實(shí)現(xiàn)插件功能;
3.它可以作為動(dòng)態(tài)代理,在未知或不確定類名的情況下,動(dòng)態(tài)生成和實(shí)例化一些類和執(zhí)行方法。
4.對(duì)于多次繼承的類,我們可以通過(guò)多次反射來(lái)探索基類的結(jié)構(gòu),或者使用遞歸反射來(lái)實(shí)例化所有繼承的類,這就是PHP依賴注入的原理。
優(yōu)勢(shì)
1.支持反射的語(yǔ)言提供了一些難以用低級(jí)語(yǔ)言實(shí)現(xiàn)的運(yùn)行時(shí)特性。
2.在某種程度上可以避免硬編碼,提供靈活性和通用性。
3、可以作為第一類對(duì)象來(lái)查找和修改源代碼的結(jié)構(gòu)(如代碼塊、類、方法、協(xié)議等)。)。
4.一串符號(hào)語(yǔ)法(如JavaScript的eval()函數(shù))可以像源代碼語(yǔ)句一樣在運(yùn)行時(shí)計(jì)算,然后匹配類或函數(shù)的字符串可以轉(zhuǎn)換為類或函數(shù)的調(diào)用或引用。
5.可以創(chuàng)建一個(gè)新的語(yǔ)言字節(jié)碼解釋器來(lái)賦予編程結(jié)構(gòu)新的含義或用途。