PHP反射之動態代理是什么-創新互聯

這篇文章給大家分享的是有關PHP反射之動態代理是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

成都創新互聯公司2013年成立,是專業互聯網技術服務公司,擁有項目網站設計、成都網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元宜君做網站,已為上家服務,為宜君各地企業和個人服務,聯系電話:18982081108

反射可以探知類的內部結構 可以用它做 hook 實現插件功能,或者做動態代理。

與反射相關

類和對象相關的函數

get_object_vars
get_class_methods
get_class_vars
get_class
get_parent_class
method_exists
property_exists
trait_exists

反射相關的 API 類

reflectiontype
reflectionproperty
reflectionobject
reflectionfunction
reflectionmethod
reflectionexception
reflectionextension
reflectionparameter
reflectionfunctionabstract
reflectiongenerator
reflectionclass
reflectionclassconstant
reflectionzendextension

反射 API 功能更強大,甚至能還原這個類的原型,包括方法的訪問權限等

應用場景

一個是對對象進行調試,另一個是獲取類的信息,通常有以下應用方式

文檔生成 用它對文件里的類進行掃描,生成描述文檔

插件開發 在 MVC 和插件開發中,常見使用反射

缺點

反射的性能消耗也很大,一般情況下盡量不使用

會破壞類的封裝性,因為反射可以使本不應該暴露的方法或屬性被強制暴露了出來

實例

下面是一個利用反射特性,實現的簡單的數據庫動態代理

基于動態代理,可以有更多的想象空間,如實現攔截器,屬性方法增加,裁剪等等

class Mysql
{
    function connect($db){
         echo "connecting database ${db[0]}\r\n";
    }
}
class SqlProxy
{
    private $target;
     function __construct($tar){
         $this->target[]  = new $tar();
     }
     function __call($name, $args){
             if($method = $r->getMethod($name)){
                 if($method->isPublic() && !$method->isAbstract()){
                     echo "method before record \r\n";
                     $method->invoke($obj,$args);
                     echo "method after record\r\n";
                 }
             }
         }
     }
 }
 $obj = new SqlProxy('Mysql');
 $obj->connect('member');

其它

echo 與 print 都是語言結構,但是后者有返回值

print_r 和 var_dump 是普通函數 皆可打印多種類型數據,但后者會輸出數據類型,前者第二參數可改變輸出為返回

感謝各位的閱讀!關于PHP反射之動態代理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:PHP反射之動態代理是什么-創新互聯
文章鏈接:http://m.kartarina.com/article20/cdcojo.html

成都網站建設公司_創新互聯,為您提供面包屑導航營銷型網站建設域名注冊做網站網站改版移動網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 无码人妻丰满熟妇区免费| 国产成人午夜无码电影在线观看 | 成人免费无码大片A毛片抽搐| 亚洲AV成人无码天堂| 国产在线无码精品无码| 国产精品无码无需播放器| 国产精品亚洲专区无码唯爱网| 成人h动漫精品一区二区无码 | 白嫩少妇激情无码| 亚洲男人在线无码视频| 精品欧洲av无码一区二区三区| 人妻无码一区二区三区| 亚洲va成无码人在线观看| 狠狠精品久久久无码中文字幕| 一区二区无码免费视频网站| 国产AV无码专区亚洲AV漫画| 精品乱码一区内射人妻无码| 中日韩亚洲人成无码网站| 亚洲av永久无码精品秋霞电影影院| 亚洲av永久中文无码精品综合 | 无码人妻精品一区二区三区蜜桃| 天堂Aⅴ无码一区二区三区| 久久人妻无码一区二区| 国产产无码乱码精品久久鸭| 国产精品白浆在线观看无码专区 | 日韩加勒比一本无码精品| 少妇人妻无码精品视频| 成人无码WWW免费视频| 国产精品va在线观看无码| 免费无码精品黄AV电影| 999久久久无码国产精品| 亚洲AV日韩AV高潮无码专区| 韩日美无码精品无码| 狠狠躁天天躁无码中文字幕图| 精品亚洲av无码一区二区柚蜜| 伊人久久精品无码麻豆一区| 亚洲AV无码一区二区三区牛牛| 永久免费AV无码国产网站| 亚洲欧洲国产综合AV无码久久| 无码乱肉视频免费大全合集| 无码国产精品一区二区免费式影视 |