利用反射api查詢乙個類的具體資訊

2021-09-07 12:34:08 字數 2250 閱讀 5070

講到這個例項,首先介紹下本人,我是乙個php程式猿。從事drupal開發2年多。能夠說從實習開始就接觸這個,至今沒有換過。drupal給我的感覺是倆字「強大」,今天寫乙個views的字段。然後須要繼承views的views_handler_field類,還要自己實現裡面的一些方法,走一些自己的配置設定,檢視這個類的時候,發現實在是太多資訊了,而且做了好些繼承,於是我就想要是能實現乙個功能,傳入乙個類名,然後就能返回類的全部資訊(包含,屬性,方法,繼承,介面,而且這些類所放置的檔案位置,以及在該檔案的多少行)在使用drupal中的dpm函式一列印(層級查詢。這是乙個外掛程式名字叫【krumo】),我賽這想法太好了啊。

。。越想越有興趣實現他了,

接下來我就想這該怎麼實現呢。後來突然想到了。前些日子看的php模式與物件導向一書中有一章節叫反射api的,對了就是它。接下來開始coding............................

php /** * use * $pros = new reftools('calssname', true, false); * dpm($pros->cinfo()); print_r($pros->cinfo()); */ class reftools /** * [cinfo description] * @return [type] [description] */ public function cinfo() /** * [getreflectionobj 獲取反射物件] * @param [type] $classname [類名] * @return [type] [物件] */ public function getreflectionobj($classname) /** * [getclassmethod 獲取類方法] * @param [type] $classname [類名] * @param boolean $isgetpar [是否繼續查詢父類] * @return [type] [陣列] */ public function getclassmethod($classname) //是否獲取父類 if( $this->isgetpar ) } $arr['parent_num'] = $this->p_num; return $arr; } /** * [getclassinfo 獲取類資訊] * @param [type] $pre [反射類物件] * @return [type] [description] */ public function getclassinfo($pre) /** * [getpropertiesdataa 獲取屬性資訊] * @param [type] $properties [arr] * @return [type] [string] */ public function getpropertiesdata( $properties ) return $arr; } /** * [getmethoddata 獲取類方法資訊] * @param reflectionmethod $method [方法物件] * @return [type] [string] */ public function getmethoddata( reflectionmethod $method ) if ( $method->isinternal() ) if ( $method->isabstract() ) if ( $method->ispublic() ) if ( $method->isprotected() ) if ( $method->isprivate() ) if ( $method->isstatic() ) if ( $method->isfinal() ) if ( $method->isconstructor() ) if ( $method->returnsreference() ) return $details; } /** * [getmethodsource 獲取方法體] * @param reflectionmethod $method [反射方法物件] * @return [type] [string] */ public function getmethodsource ( reflectionmethod $method ) }

在 getreflectionobj 這種方法裡面大家可能已經注意到了。大家但是試試,有知道解決方式的交流下。。。。

利用反射api查詢乙個類的詳細資訊

說到這個例項,首先介紹下本人,我是乙個php程式設計師,從事drupal開發2年多,可以說從實習開始就接觸這個,至今沒有換過,drupal給我的感覺是倆字 強大 今天寫乙個views的字段,然後需要繼承views的views handler field類,還要自己實現裡面的一些方法,走一些自己的配置...

乙個高效反射類

1.專案中有需要用到反射的地方,仔細研究了下反射,其效率並不高 還好微軟提供了il的程式設計方法,自己實現了乙個高效反射類 下面舉些常用例子 我們反射出.netframework中的乙個未公開的類 sessionstateutility 並呼叫其私有方法 deserialize 注意 由於dynam...

利用反射自己寫的乙個ModelHelper類

開發中 很多人都會使用bll model這種開發,我也是,雖然現在有很多的自動生成工具,能在幾秒內生成cs的模板,但我個人還不是很喜歡,我還是喜歡自己乙個乙個去寫,這樣更能了解自己的 不過手動編寫的時候,最討厭的就是getmodel這類方法了,把datarow的資料轉換成乙個model,實在寫的我頭...