最近プロジェクトを書くのに忙しく、特に新しいことを学んでいなかったので、長い間ブログを更新していませんでした。私たちのプロジェクトでは、laravel をベースにした軽量フレームワークである lumen を使用しています。必要なクラスや判定メソッドなどを動的にロードするためにいくつかのリフレクション API メカニズムが使用されていることがわかりました。そのため、この記事は PHP で頻繁に使用されます。リフレクション API を学習したい学生は参照してください。
リフレクション API について言えば、PHP のリフレクション API は Java の java.lang.reflect パッケージに似ていると思います。どちらもクラスのメンバーの属性とメソッドを出力および分析できる一連の組み込みクラスで構成されています。 。 get_class_vars() などのオブジェクト関数をすでに学習しているかもしれませんが、リフレクション API を使用すると、より柔軟で、出力情報がより詳細になります。
まず第一に、リフレクション API はクラスをチェックするために使用されるだけでなく、それ自体にさまざまな機能を完了するためのクラスのセットが含まれていることを知っておく必要があります。一般的に使用されるクラスは次のとおりです:
振り返りクラス | クラスの基本情報を出力できます(提供された静的export()関数を通じて) |
ReflectionMethod クラス | 名前による意味の理解、クラスメソッドの出力、メソッドの具体的な情報の取得など |
ReflectionClass クラス | クラスに含まれるメソッド、クラスの属性、抽象クラスかどうかなどのクラス情報を取得するために使用されます。 |
ReflectionParameterクラス | パラメータ情報を表示し、既知のメソッドのパラメータ転送ステータスを動的に取得できます |
ReflectionException クラス | エラーメッセージを表示するために使用されます |
ReflectionExtensionクラス | PHP拡張機能の情報を取得し、拡張機能が存在するかどうかなどを判断します |
従来の印刷情報とリフレクション API の違い
以下は、リフレクションの使用方法を示すために私が自分で書いたパラメーター プログラムです。
リーリー
var_dump(
$te_obj); リーリー
Reflection::export($obj);以下に示すように、Reflection が提供する組み込みメソッドのエクスポートを使用して情報を出力します。
出力される情報は比較的充実しており、メンバー属性、メンバーメソッド、クラスの基本情報、ファイルパス、メソッド情報、メソッド属性、パラメータ転送ステータス、ファイルの行数などが含まれます。クラス情報の比較的包括的な表示。 var_dump() または print_r はクラスの簡単な情報しか表示できず、多くの情報はまったく表示できないため、リフレクション API はクラスに関する詳細情報を提供するだけであることがわかります。これは、クラスを呼び出す状況を知っているため、インターフェイスを作成する場合、特に他の人のインターフェイスを呼び出す場合に非常に便利です。何か問題が発生した場合のデバッグにも役立ちます。
リーリーリフレクション API の具体的な使用法:
フレームワークのソース コードを読んだ生徒は、フレームワークがサードパーティのプラグイン、クラス ライブラリなどをロードできることを知っています。次の例では、この関数をリフレクション API を使用して単純に実装しています。この例のプロトタイプを本で学び、自分の考えに従ってセットを作成しました。 実現したい関数: クラスを使用して動的に実行します。プロパティ クラスをトラバースして呼び出す オブジェクトとクラスは、クラスを既存のコードに埋め込んだり、クラス ライブラリ コードを手動で呼び出したりすることなく、他のクラスのメソッドを自由にロードできます。 規則: 各クラスには作業メソッドが含まれている必要があり、インターフェイスを抽象化できます。各クラスライブラリの情報に相当する各クラスの情報をファイルに記述し、クラスが保存した Property クラスライブラリの対応するオブジェクトを通じて各クラスライブラリの work メソッドを呼び出すことができます。
以下は基本的なコードです:
ここでは、Property インターフェイスを実装するために 2 つの類似したクラスを定義します。同時に、両方とも work() メソッドを実装します。同時に、StudentController クラスには Person オブジェクトが必要です。ファイルに各クラスの情報を保存することもできます。
リーリーこのプログラムの最後に、Run スタートアップは、ロードされるクラス ライブラリの他のメンバー プロパティを初期化するコンストラクターを自動的に呼び出します。これには、対応するメソッド操作の初期化と実行が含まれます。ここでは、対応する set メソッドのみが完了します。 $mod_arr 属性は呼び出しクラスのすべてのオブジェクトを保存します。各オブジェクトにはデータが含まれており、含まれるオブジェクトを走査して work() メソッドを呼び出すことができます。
このプログラムは、リフレクション PAI の理解を助けるためにのみ使用されます。各機能は、多くのリフレクション API クラスとメソッドを使用します。以下に各メソッドの概要を示します。
Reflection API
提供される共通のクラスと関数: 以下に提供されている機能は、すべてが使用されているわけではないので、すべてを確認したい場合は、オンラインで検索できます。 。提供されている一連のメソッドを記憶する必要はなく、使用するときに復習できます。
リーリー急いで書いたので間違いがあるかもしれませんが、修正してください。
転載の際は出典を明記してください、よろしくお願いします!http://www.bkjia.com/PHPjc/1065782.html
www.bkjia.com