ホームページ  >  記事  >  バックエンド開発  >  PHPリフレクションの原理

PHPリフレクションの原理

(*-*)浩
(*-*)浩オリジナル
2019-09-03 13:51:473189ブラウズ

PHPリフレクションの原理

#リフレクションとは何ですか?

PHP のオブジェクト指向プログラミングのオブジェクトには、システムによって内省する機能が与えられており、この内省プロセスはリフレクションと呼ばれます。

私たちの反射の直感的な理解は、到着点に基づいて出発点と発生源を見つけるプロセスである可能性があります。平たく言えば、裸のオブジェクトを与えます。その後、このオブジェクトに基づいてそれを知ることができます。 . それが属するクラスとそのクラスが持つメソッド。

PHP では、リフレクションとは、PHP の実行状態で PHP プログラムの分析を拡張し、クラス、プロパティ、メソッド、パラメーターなどに関するコメントを含む詳細情報をエクスポートまたは抽出することを指します。この動的に情報を取得し、オブジェクトのメソッドを動的に呼び出す機能をリフレクションAPIと呼びます。

コードを通して体験してみましょう:

class person{
    public $name;
    public $age;
 
    public function say()
    {
        echo $this->name."<br>".$this->age;
    }
 
    public function set($name,$value)
    {
        echo &#39;set name to value&#39;;
        $this->$name = $value;
    }
 
    public function get($name)
    {
        if(!isset($this->$name)){
            echo &#39;unset name&#39;;
            $this->$name = &#39;seting~~~&#39;;
        }
 
        return $this->$name;
    }
}
 
$stu = new person();
$stu->name = &#39;luyaran&#39;;
$stu->age = 26;
$stu->sex = &#39;girl&#39;;

上記のコードは単純なクラスです。インスタンス化して値を割り当てて、それを実現します。意味があります。

その後、リフレクション API を通じてこの stu オブジェクトのメソッドとプロパティのリストを取得しましょう:

//获取对象的属性列表
$reflect = new ReflectionObject($stu);
$props = $reflect->getProperties();
foreach ($props as $key_p => $value_p) {
    var_dump($value_p->getName());
}
//获取对象的方法列表
$method = $reflect->getMethods();
foreach ($method as $key_m => $value_m) {
    var_dump($value_m->getName());
}

同時に、リフレクションはクラスやオブジェクトだけでなく、関数、拡張モジュール、例外などにも対応します。

私たちに関しては、ここでは詳細には触れませんが、最後のスペースで、リフレクションのいくつかの機能について説明しましょう。

まず第一に、これはドキュメントの生成に使用できるため、これを使用してドキュメント内のクラスをスキャンし、スキャンされたドキュメントを 1 つずつ生成できます。

リフレクションはクラスの内部構造を検出でき、プラグイン関数を実装するためのフックとして使用したり、動的プロキシとしても使用できます。

以上がPHPリフレクションの原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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