摘要:發(fā)現(xiàn)大量的使用了反射機(jī)制。下面就來簡單看看一些反射的應(yīng)用獲得反射下面我們來通過這個(gè)反射來得到的私有屬性得到結(jié)果得到這樣我們就可以很輕松的獲得的私有屬性了。最后通過執(zhí)行該方法反射還有很多可用的方法,這里就不一一說了。
這幾天在看laravel框架的核心代碼。發(fā)現(xiàn)大量的使用了反射機(jī)制。下面就來簡單看看一些反射的應(yīng)用
class A { private $_foo = "this is a"; public function index() { return $this->_foo; } private function _come($param) { return "this is come".$param; } } $refClass = new ReflectionClass("A");//獲得反射
下面我們來通過這個(gè)反射來得到A的私有屬性
$privateParams = $refClass->getDefaultProperties(); print_r($privateParams);//得到結(jié)果 Array ( [_foo] => this is a ) echo $privateParams["_foo"];//得到 this is a
這樣我們就可以很輕松的獲得A的私有屬性了。那么執(zhí)行私有方法應(yīng)該怎么操作呢。接下來我們先看執(zhí)行共有方法,執(zhí)行公有方法比較簡單。
/****************獲得類的實(shí)例*******************/ $class = $refClass->newInstance(); echo $class->index();
這樣就可以調(diào)用公有的方法了。下面看執(zhí)行私有方法
/****************獲取A的方法*******************/ $refHasClass = $refClass->getMethods(); print_r($refHasClass); /*** * Array ( [0] => ReflectionMethod Object ( [name] => index [class] => A ) * [1] => ReflectionMethod Object ( [name] => _come [class] => A ) ) */ $come = $refClass->getMethod("_come"); $come->setAccessible(true); echo $come->invoke($class,"this is param"); // this is athis is comethis is param
先通過getMethod()就可以獲取到come方法,然后設(shè)置come方法的可訪問性。最后通過invoke執(zhí)行該方法
反射還有很多可用的方法,這里就不一一說了。有興趣的可以看看官方文檔
原文地址
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28822.html
摘要:現(xiàn)代的面向?qū)ο蟮乃枷氩粡?qiáng)調(diào)為真實(shí)世界建模變得更加理性化一些,把目標(biāo)放在解耦上。各種語言中的多態(tài)多態(tài)確切的含義是同一類的對(duì)象收到相同消息時(shí),會(huì)得到不同的結(jié)果。小結(jié)本章主要介紹面向?qū)ο笏枷氲某绦虻慕M成元素類和對(duì)象。 第一章 面向?qū)ο笏枷氲暮诵母拍?showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...
摘要:反射提供給面向?qū)ο缶幊炭梢宰允〉哪芰Γ捶瓷?。在簡單工廠模式中,根據(jù)傳遞的參數(shù)來返回不同的類的實(shí)例簡單工廠模式又稱為靜態(tài)工廠方法模式。也就是簡單工廠模式工廠工廠類。PHP高級(jí)特性-反射以及工廠設(shè)計(jì)模式的結(jié)合使用 [結(jié)合 Laravel-Admin 代碼實(shí)例講解]利用反射來實(shí)現(xiàn)工廠模式的生產(chǎn)而無需創(chuàng)建特定的工廠類本文地址http://janrs.com/?p=833轉(zhuǎn)載無需經(jīng)過作者本人授權(quán)轉(zhuǎn)載...
摘要:以實(shí)現(xiàn)自己熟悉的東西為導(dǎo)向比如我們做后端開發(fā),首先是常用的循環(huán)迭代條件判斷增刪改成。它是由實(shí)現(xiàn)的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個(gè)項(xiàng)目我們我又細(xì)分了6個(gè)版本來演進(jìn),希望更加便于大家對(duì)比...
摘要:以實(shí)現(xiàn)自己熟悉的東西為導(dǎo)向比如我們做后端開發(fā),首先是常用的循環(huán)迭代條件判斷增刪改成。它是由實(shí)現(xiàn)的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個(gè)項(xiàng)目我們我又細(xì)分了6個(gè)版本來演進(jìn),希望更加便于大家對(duì)比...
摘要:反射在每個(gè)面向?qū)ο蟮木幊陶Z言中都存在,它的主要目的就是在運(yùn)行時(shí)分析類或者對(duì)象的狀態(tài),導(dǎo)出或提取出關(guān)于類方法屬性參數(shù)等的詳細(xì)信息,包括注釋。反射是操縱面向?qū)ο蠓缎椭性P偷?,可用于?gòu)建復(fù)雜,可擴(kuò)展的應(yīng)用。 反射在每個(gè)面向?qū)ο蟮木幊陶Z言中都存在,它的主要目的就是在運(yùn)行時(shí)分析類或者對(duì)象的狀態(tài),導(dǎo)出或提取出關(guān)于類、方法、屬性、參數(shù)等的詳細(xì)信息,包括注釋。 反射是操縱面向?qū)ο蠓缎椭性P偷?AP...
閱讀 2555·2021-09-24 10:29
閱讀 3831·2021-09-22 15:46
閱讀 2598·2021-09-04 16:41
閱讀 3006·2019-08-30 15:53
閱讀 1287·2019-08-30 14:24
閱讀 3083·2019-08-30 13:19
閱讀 2196·2019-08-29 14:17
閱讀 3548·2019-08-29 12:55