ホームページ >バックエンド開発 >PHPチュートリアル >phpでのリフレクションの詳細な説明と分析例
この記事では、主に PHP のリフレクション コンテンツの知識を紹介します。ここでは、関連情報と簡単なサンプル コードを提供します。興味のある方は参考にしてください。最近、Java プログラミングのアイデアを読んでいて、型情報の章を目にしました。授業の情報と振り返りの概念について話しました。さて、phpのリフレクションツールをおさらいしてみましょう。マニュアルには次のように書かれています: 「PHP 5 には完全なリフレクション API があり、クラス、インターフェイス、関数、メソッド、拡張機能をリバース エンジニアリングする機能が追加されています。さらに、リフレクション API は関数、クラス、メソッドを取り出すメソッドを提供します。ドキュメントのコメント「もちろん、マニュアルは少し抽象的です。いわゆるリバース エンジニアリングとは、コメントを含むクラス、メソッド、プロパティ、パラメータなどの詳細情報を取得できることを意味します。たとえば、
class Foo { public $foo = 1; protected $bar = 2; private $baz = 3; /** * Enter description here ... */ public function myMethod() { echo 'hello 2b'; } } $ref = new ReflectionClass('Foo'); $props = $ref->getProperties(); foreach ($props as $value) { echo $value->getName()."\n"; } //output //foo //bar //bazReflectionClass
というクラスです。特定のクラスを返します。プロパティ、メソッド、名前空間、実装されているインターフェイスなどの関連情報。前の例では、ReflectionClass::getProperties は ReflectionProperty オブジェクトの配列を返しました。
ReflectionPropertyクラスは、クラスのプロパティに関する情報を報告します。たとえば、isDefault isPrivate isProtected isPublic isStatic など、メソッド getName は属性の名前を取得します。 上記は属性を取得するものですが、
class Foo { public $foo = 1; protected $bar = 2; private $baz = 3; /** * Enter description here ... */ public function myMethod() { echo 'hello 2b'; } } $ref = new ReflectionClass('Foo'); $method = $ref->getMethod('myMethod'); $method->invoke($ref->newInstance());ReflectionClass::getMethod
などのクラスメソッドを取得するメソッドもあります。ReflectionMethodクラスはメソッドに関する情報を報告します。 isAbstract isPrivate isProtected isPublic isStatic isConstructor など重要なメソッド Invoke もあり、InvokeArgs が実行メソッドです! 他のオブジェクトについては、マニュアルを読むことができます、それは難しくありません!
リフレクションの用途は何ですか?
リフレクションは動的に実行される概念であり、これらを組み合わせて使用すると、他のクラス、インターフェイス、メソッド、プロパティ、メソッド、拡張機能の分析に役立ちます。動的プロキシなどのパターンを構築することもできます。 kohana や yii などの一部の PHP フレームワークではリフレクションを使用することも非常に一般的です。以下は、リフレクションを使用する mvc を実装するための kohana のコードです。
// Start validation of the controller $class = new ReflectionClass(ucfirst(Router::$controller).'_Controller'); // Create a new controller instance $controller = $class->newInstance(); // Load the controller method $method = $class->getMethod(Router::$method); // Execute the controller method $method->invokeArgs($controller, $arguments);
上記のコードは、このフレームワークのプロセスを明確に見ることができます。 Router を介して、実際に URL クラスを処理して、どのコントローラーとどのメソッドを取得することができます。次にメソッドを実行します。
要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
phpWeChatパブリックプラットフォームのインタラクションとインターフェイスの詳細な説明
phpWeChatパブリックアカウントjs-sd K開発アプリケーション
以上がphpでのリフレクションの詳細な説明と分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。