PHP5 には完全なリフレクション API があり、クラス、インターフェイス、関数、メソッド、拡張機能をリバース エンジニアリングする機能が追加されています。
リフレクションとは何ですか?
PHPの実行状態でPHPプログラムの解析を拡張し、クラス、メソッド、プロパティ、パラメータなどの詳細情報をコメントも含めてエクスポートまたは抽出することを指します。この動的に情報を取得し、オブジェクトのメソッドを動的に呼び出す機能をリフレクションAPIと呼びます。リフレクションは、オブジェクト指向パラダイムでメタモデルを操作するための API であり、非常に強力で、複雑でスケーラブルなアプリケーションの構築に役立ちます。
その用途には、プラグインの自動ロード、ドキュメントの自動生成が含まれ、PHP 言語の拡張にも使用できます。
PHP リフレクション API は、プログラムのメタデータにアクセスしたり、関連する注釈と対話したりするのに役立ついくつかのクラスで構成されています。リフレクションの助けを借りて、クラスによって実装されたメソッドを取得し、クラスのインスタンスを作成し (new による作成とは異なります)、メソッドを呼び出し (これも通常の呼び出しとは異なります)、パラメーターを渡し、静的メソッドを動的に呼び出すことができます。クラスのメソッド。
Reflection API は、いくつかのクラス、例外、インターフェイスを含む PHP の組み込み OOP テクノロジ拡張機能であり、これらを一緒に使用すると、他のクラス、インターフェイス、メソッド、プロパティ、メソッド、拡張機能の分析に役立ちます。これらの OOP 拡張はリフレクションと呼ばれます。
通常は、ReflectionClass クラスと ReflectionMethod クラスを使用します。例:
/**
* デモンストレーションのために、これを非公開に設定します
*/
プライベート $_allowDynamicAttributes = false;
/**
* type=primary_autoincrement
*/
保護された $id = 0;
/**
* type=varchar length=255 null
*/
保護された $name;
/**
* type=text null
*/
保護された $biography;
パブリック関数 getId() {
$this->id;
を返します
}
パブリック関数 setId($v) {
$this->id = $v;
}
パブリック関数 getName() {
$this->name;
を返します
}
パブリック関数 setName($v) {
$this->name = $v;
}
パブリック関数 getBiography() {
$this->経歴を返す;
}
パブリック関数 setBiography($v) {
$this->略歴 = $v;
}
}
1. ReflectionClass を通じて、Person クラスの次の情報を取得できます。 1.定数
2.プロパティのプロパティ名
3. メソッドのメソッド名 static
4. プロパティの静的プロパティ
5. 名前空間
6. Personクラスがfinalかabstractか
7. Personクラスには特定のメソッドがありますか
次にそれを反映するには、クラス名「person」を ReflectionClass に渡すだけです:
getDocComment を通じてプロパティに書き込まれたコメントを取得できます。
3) クラスのメソッドを取得します
4) クラスメソッドを実行します:
2. ReflectionMethod を通じて、Person クラスのメソッドに関する情報を取得できます:
1. 「パブリック」、「保護」、「プライベート」、または「静的」タイプかどうか
2.メソッドのパラメータリスト
3. メソッドのパラメータの数
4. クラスのメソッドのアンチコール
if ($method->isPublic() && !$method->isStatic()) {
echo 'アクションは正しい';
}
echo $method->getNumberOfParameters() // パラメータの数
;
echo $method->getParameters(); // パラメータオブジェクト配列
array_push($_FILES[
これは単なるパラメータの受け渡しであり、このクラスは ReflectionMethod クラスの定義に準拠しています。