摘要:發現大量的使用了反射機制。下面就來簡單看看一些反射的應用獲得反射下面我們來通過這個反射來得到的私有屬性得到結果得到這樣我們就可以很輕松的獲得的私有屬性了。最后通過執行該方法反射還有很多可用的方法,這里就不一一說了。
這幾天在看laravel框架的核心代碼。發現大量的使用了反射機制。下面就來簡單看看一些反射的應用
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");//獲得反射
下面我們來通過這個反射來得到A的私有屬性
$privateParams = $refClass->getDefaultProperties(); print_r($privateParams);//得到結果 Array ( [_foo] => this is a ) echo $privateParams["_foo"];//得到 this is a
這樣我們就可以很輕松的獲得A的私有屬性了。那么執行私有方法應該怎么操作呢。接下來我們先看執行共有方法,執行公有方法比較簡單。
/****************獲得類的實例*******************/ $class = $refClass->newInstance(); echo $class->index();
這樣就可以調用公有的方法了。下面看執行私有方法
/****************獲取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方法,然后設置come方法的可訪問性。最后通過invoke執行該方法
反射還有很多可用的方法,這里就不一一說了。有興趣的可以看看官方文檔
原文地址
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28822.html
摘要:現代的面向對象的思想不強調為真實世界建模變得更加理性化一些,把目標放在解耦上。各種語言中的多態多態確切的含義是同一類的對象收到相同消息時,會得到不同的結果。小結本章主要介紹面向對象思想的程序的組成元素類和對象。 第一章 面向對象思想的核心概念 showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...
摘要:反射提供給面向對象編程可以自省的能力,即反射。在簡單工廠模式中,根據傳遞的參數來返回不同的類的實例簡單工廠模式又稱為靜態工廠方法模式。也就是簡單工廠模式工廠工廠類。PHP高級特性-反射以及工廠設計模式的結合使用 [結合 Laravel-Admin 代碼實例講解]利用反射來實現工廠模式的生產而無需創建特定的工廠類本文地址http://janrs.com/?p=833轉載無需經過作者本人授權轉載...
摘要:以實現自己熟悉的東西為導向比如我們做后端開發,首先是常用的循環迭代條件判斷增刪改成。它是由實現的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個項目我們我又細分了6個版本來演進,希望更加便于大家對比...
摘要:以實現自己熟悉的東西為導向比如我們做后端開發,首先是常用的循環迭代條件判斷增刪改成。它是由實現的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個項目我們我又細分了6個版本來演進,希望更加便于大家對比...
摘要:反射在每個面向對象的編程語言中都存在,它的主要目的就是在運行時分析類或者對象的狀態,導出或提取出關于類方法屬性參數等的詳細信息,包括注釋。反射是操縱面向對象范型中元模型的,可用于構建復雜,可擴展的應用。 反射在每個面向對象的編程語言中都存在,它的主要目的就是在運行時分析類或者對象的狀態,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。 反射是操縱面向對象范型中元模型的 AP...
閱讀 2518·2021-09-24 10:29
閱讀 3799·2021-09-22 15:46
閱讀 2570·2021-09-04 16:41
閱讀 2977·2019-08-30 15:53
閱讀 1258·2019-08-30 14:24
閱讀 3052·2019-08-30 13:19
閱讀 2170·2019-08-29 14:17
閱讀 3520·2019-08-29 12:55