ホームページ >バックエンド開発 >PHPチュートリアル >Xin Xing が PHP のリフレクション メカニズムを詳しく調べてみましょう

Xin Xing が PHP のリフレクション メカニズムを詳しく調べてみましょう

WBOY
WBOYオリジナル
2016-06-13 12:02:541013ブラウズ

Xin Xing に従って、PHP のリフレクション メカニズムについて詳しく説明します

以前 Java を学習していたとき、マルチスレッドを学習した後にリフレクションを学習したことをはっきりと覚えています。もちろん、PHP にはリフレクション メカニズムがあります。あなたはまだ子供です。理解できない場合は、理解する必要があります。結局のところ、内省の機能は非常に強力であり、それを学ぶことは実用的に非常に重要です。 リフレクションを簡単に理解すると、クラスを取得し、そのクラスがどのようなメソッドを持っているか、どのようなパラメータを持っているかなど、このクラスに関する情報を取得するということです。もちろん、そのメソッドや他の関数、およびその目的を動的に呼び出すこともできます。プラグインを自動的にロードしたり、ドキュメントを自動生成したりすることで、PHP 言語を拡張できます。

ほとんどすべてのリフレクション クラスはリフレクター インターフェイスを実装しています。すべての実装クラスには、エクスポート メソッドというメソッドが 1 つあります。ここでは、最初の PHP の組み込みクラスとして使用します。リフレクションの基本的な使用法を見てみるために、次のコードで新しい php ファイルを作成してみましょう:

4f2101906c7420d1ea0ec7fe15e284f1isUserDefined()){		Reflection::export($myclass);	}}
そのリフレクション メカニズムを通じて、表示される内容は非常に包括的です。たとえば、定数は定義されていません。 $name という public 属性と test というメソッドがあり、このメソッドのコメントは「/*** 情報を印刷するためにのみ使用されます*/」です。他の人があなたのクラスを反映するときにこの関数の効果を確認できるように、ここに良いコメントを付けてください。ちなみに、ここでの get_declared_classes は定義されたクラスを取得するために使用されます。上記の $myclass は文字列ではなくクラスであるため、ユーザーによって isUserDefined が呼び出されたかどうかを検出する独自のメソッドがあることに注意してください。

var_dump を通じてクラスに関する情報を取得できると言う人もいるかもしれません。はい、var_dump を使用して何が出力されるかを見てみましょう。 >

Class [ class Person ] { @@ D:\MyApp\wamp\www\ap.php 2-10 - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [1] { Property [ public $name ] } - Methods [1] { /** *仅仅用来打印信息 */ Method [ public method test ] { @@ D:\MyApp\wamp\www\ap.php 7 - 9 } } }

その出力は次のとおりです:

6165c481ff0d03b947bdf0e21c1de296name = "xinxing";var_dump($person);

もちろん、これと比べてリフレクション、var_dump はクラスに適しています。この操作はまだ非常に弱いですが、クラスのインスタンスの情報を表示することしかできず、クラスのアノテーションやメソッドについては何もできません。方法はありません。これはオブジェクトが持つべきものではありません。
<strong>object</strong>(<em>Person</em>)[<em>1</em>]  <em>public</em> 'name' <span style="color:#888a85">=></span> <small>string</small> <span style="color:#cc0000">'xinxing'</span> <em>(length=7)</em>

離れないで、私のブログはリフレクションの応用についての記事を書き続けます。少し長いので、別のブログを開きたいと思います。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。