這篇文章將為大家詳細(xì)講解有關(guān)怎么在PHP中利用反射動態(tài)獲取類方法和屬性,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、臨翔網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為臨翔等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。say ( 'hello' ); echo "
"; // 創(chuàng)建一個Person的反射類 $rp = new ReflectionClass ( 'Person' ); // 通過ReflectionClass的方法來獲取類的詳細(xì)信息 // 獲取常量 echo $rp->getConstant ( 'weightUnit' ); echo "
"; // 獲取類中已定義的常量 var_dump ( $rp->getConstants () ); // 獲取屬性,返回的是一個ReflectionProperty類 $propName = $rp->getProperty ( 'name' ); echo $propName->getName(), ':', $propName->getValue ( new Person () ); echo "
"; // 獲取類中已定義的一組屬性 $propArr = $rp->getProperties (); foreach ( $propArr as $obj ) { echo $obj->getName (), ':', $obj->getValue ( new Person () ); } echo "
"; //獲取方法,返回的是一個ReflectionMethod類 $sayMetd = $rp->getMethod('say'); if($sayMetd->isPublic() && !$sayMetd->isAbstract()) { $sayMetd->invoke(new Person(), 'hehe'); $sayMetd->invokeArgs(new Person(), array('hehe')); } //獲取類中已定義的一組方法,可以過濾不需要的方法 $metds = $rp->getMethods(); //獲取命名空間 echo $rp->getNamespaceName(); echo "
"; //判斷一個方法是否定義 if($rp->hasMethod('say')) { echo 'say has'; } echo "
"; //判斷一個屬性是否定義 if($rp->hasProperty('name')) { echo 'name has'; }
運(yùn)行結(jié)果:
hello
kg
array(2) { ["weightUnit"]=> string(2) "kg" ["heightUnit"]=> string(2) "cm" } name:test
name:testage:1
hehehehe
say has
name has
關(guān)于怎么在PHP中利用反射動態(tài)獲取類方法和屬性就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。