PHPの反射動的取得クラスメソッド、属性、パラメータ操作例

2297 ワード

この例では,PHPの反射動的取得クラスメソッド,属性,パラメータ操作について述べる.皆さんの参考にしてください.具体的には以下の通りです.
PHP実行時に,PHPの反射によりクラスのメソッド,属性,パラメータなどの詳細を動的に取得できる.
用途:プラグインの設計、ドキュメントの自動生成、PHP言語の拡張.

say ( 'hello' );
echo "
"; // Person $rp = new ReflectionClass ( 'Person' ); // ReflectionClass // 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'; }

実行結果:
hello kg array(2) { ["weightUnit"]=> string(2) "kg"["heightUnit"]=> string(2) "cm"} name:test name:testage:1 hehehehe say has name has
PHPについてもっと兴味のある読者は、「phpオブジェクト向けプログラミング入門チュートリアル」、「PHP配列(Array)操作テクニック大全」、「PHP基本文法入門チュートリアル」、「PHP演算と演算子用法総括」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.