ホームページ >バックエンド開発 >PHPチュートリアル >php Reflectionの詳細説明 反映機構例
PHP5 には、リフレクションという新しい機能が追加されています。この機能により、プログラマーは
リバース エンジニアリング [リバース エンジニアリング] クラス、インターフェイス、関数、メソッド、拡張機能 [拡張ライブラリのサポート] を行うことができます。
PHP コードを通じて、オブジェクトのすべての情報を取得し、オブジェクトと対話することができます。
次の Person クラスを想定します:class Person { /** * For the sake of demonstration, we"re setting this private */ private $_allowDynamicAttributes = false; /** * type=primary_autoincrement */ protected $id = 0; /** * type=varchar length=255 null */ protected $name; /** * type=text null */ protected $biography; public function getId() { return $this->id; } public function setId($v) { $this->id = $v; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } public function getBiography() { return $this->biography; } public function setBiography($v) { $this->biography = $v; } }ReflectionClass を通じて、次の Person クラスの情報を取得できます:
Namespace Namespace
$class = new ReflectionClass('Person');
* プロパティ(Properties)を取得:
$properties = $class->getProperties(); foreach($properties as $property) { echo $property->getName()."\n"; } // 输出: // _allowDynamicAttributes // id // name // biographyデフォルトでは、ReflectionClass はプライベートおよび保護されたプロパティを含むすべてのプロパティを取得します。プライベート属性のみを取得したい場合は、追加のパラメーターを渡す必要があります:
ReflectionProperty::IS_STATIC
$property を通じてプロパティ名を取得できます。 ->getName()、getDocComment を渡すと、プロパティに書き込まれたコメントを取得できます。
$private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE);ちょっと信じられないですね。コメントも取得できます。
* メソッドの取得
: getMethods() を通じてクラスのすべてのメソッドを取得します。返されるのは、ReflectionMethod オブジェクトの
です。
これ以上のデモはありません。 * 最後に、ReflectionMethod を通じてクラス内のメソッドを呼び出します。
りー
以上がphp Reflectionの詳細説明 反映機構例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。