這幾天在看laravel框架的核心代碼。發(fā)現(xiàn)大量的使用了反射機(jī)制。下面就來(lái)簡(jiǎn)單看看一些反射的應(yīng)用
html' target='_blank'>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 //獲得反射
下面我們來(lái)通過(guò)這個(gè)反射來(lái)得到A的私有屬性
$privateParams = $refClass- getDefaultProperties();print_r($privateParams);//得到結(jié)果 Array ( [_foo] = this is a )echo $privateParams[ _foo //得到 this is a
這樣我們就可以很輕松的獲得A的私有屬性了。那么執(zhí)行私有方法應(yīng)該怎么操作呢。接下來(lái)我們先看執(zhí)行共有方法,執(zhí)行公有方法比較簡(jiǎn)單。
/****************獲得類(lèi)的實(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
先通過(guò)getMethod()就可以獲取到come方法,然后設(shè)置come方法的可訪(fǎng)問(wèn)性。最后通過(guò)invoke執(zhí)行該方法
反射還有很多可用的方法,這里就不一一說(shuō)了。有興趣的可以看看官方文檔以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP !
相關(guān)推薦:
php7+的php-fpm參數(shù)配置的注意事項(xiàng)
以上就是PHP通過(guò)反射來(lái)得到類(lèi)以及一些基本的應(yīng)用的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注