中山php|最優(yōu)網(wǎng)絡(luò) :中山做網(wǎng)站 中山php建站
最優(yōu)良人
Posts Tagged With: 反射機(jī)制
什么是php反射機(jī)制以及利用php反射機(jī)制實現(xiàn)可插拔可擴(kuò)展的插件架構(gòu)
2011/08/26 at 00:06 » Comments (406)
反射是什么? 它是指在PHP運行狀態(tài)中,擴(kuò)展分析PHP程序,導(dǎo)出或提取出關(guān)于類、方法、屬性、參數(shù)等的詳細(xì)信息,包括注釋。這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為反射API。 反射是操縱面向?qū)ο蠓缎椭性P偷腁PI,其功能十分強大,可幫助我們構(gòu)建復(fù)雜,可擴(kuò)展的應(yīng)用。其用途如:自動加載插件,自動生成文檔,甚至可用來擴(kuò)充PHP語言。php反射api由若干類組成,可幫助我們用來訪問程序的元數(shù)據(jù)或者同相關(guān)的注釋交互。借助反射我們可以獲取諸如類實現(xiàn)了那些方法,創(chuàng)建一個類的實例(不同于用new創(chuàng)建),調(diào)用一個方法(也不同于常規(guī)調(diào)用),傳遞參數(shù),動態(tài)調(diào)用類的靜態(tài)方法。 * ** 反射api是php內(nèi)建的oop技術(shù)擴(kuò)展,包括一些類,異常和接口,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性,方法和擴(kuò)展。這些oop擴(kuò)展被稱為反射,位于php源碼/ext/reflection目錄下。 可以使用反射api自省反射api本身(這可能就是反射最初的意思,自己"看"自己): <?php Reflection::export(new ReflectionExtension('reflection')); ?> 幾乎所有的反射api都實現(xiàn)了reflector接口,所有實現(xiàn)該接口的類都有一個export方法,該方法打印出參數(shù)對象的相關(guān)信息。 使用get_declared_classes()獲取所有php內(nèi)置類,get_declared_interfaces(); get_defined_functions(); get_defined_vars(); get_defined_constants();可獲取php接口,方法,變量,常量信息。 ** *** 反射初探: <?php //定義一個自定義類 class MyTestClass{ public function testFunc($para0='defaultValue0'){ } } //接下來反射它 foreach(get_declared_classes() as $class){ //實例化一個反射類 ...more »