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

2021-06-22 22:30:12 字數 2676 閱讀 8326

說到這個例項,首先介紹下本人,我是乙個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,實在寫的我頭...