PHP はリフレクションを使用してクラスといくつかの基本的なアプリケーションを取得します

不言
リリース: 2023-04-02 18:20:02
オリジナル
2079 人が閲覧しました

この記事では主に、リフレクションを通じてクラスを取得するための PHP といくつかの基本的なアプリケーションを紹介します。これには一定の参考値があります。今、共有します。必要な友人はそれを参照できます。

過去数回今日は、laravel フレームワークのコアコードを見てみましょう。反射メカニズムが広範囲に使用されていることがわかりました。いくつかのリフレクション アプリケーションを簡単に見てみましょう

class A
{
    private $_foo = 'this is a';
    public function index()
    {
        return $this->_foo;
    }
    private function _come($param)
    {
        return 'this is come'.$param;
    }

}
$refClass = new ReflectionClass('A');//获得反射
ログイン後にコピー

このリフレクションを使用して、A

$privateParams = $refClass->getDefaultProperties();
print_r($privateParams);//得到结果 Array ( [_foo] => this is a )
echo $privateParams['_foo'];//得到 this is a
ログイン後にコピー

のプライベート プロパティを取得しましょう。これにより、簡単に取得できるようになりますA のプライベート属性。では、プライベートメソッドを実行するにはどうすればよいでしょうか?次に、パブリック メソッドの実行を最初に見てみましょう。パブリック メソッドの実行は比較的簡単です。

/****************获得类的实例*******************/
$class = $refClass->newInstance();
echo $class->index();
ログイン後にコピー

この方法でパブリック メソッドを呼び出すことができます。プライベート メソッド

/****************获取A的方法*******************/
$refHasClass = $refClass->getMethods();
print_r($refHasClass);
/***
 * Array ( [0] => ReflectionMethod Object ( [name] => index [class] => A )
 * [1] => ReflectionMethod Object ( [name] => _come [class] => A ) )
 */
$come = $refClass->getMethod('_come');
$come->setAccessible(true);
echo $come->invoke($class,'this is param');
// this is athis is comethis is param
ログイン後にコピー

の実行を見てみましょう。まず、getMethod() を通じて come メソッドを取得し、次に # のアクセシビリティを設定します。 ##come メソッド。最後に、invoke

を通じてメソッドを実行します。使用可能なリフレクション メソッドは多数あるため、ここでは 1 つずつ説明しません。ご興味がございましたら、公式ドキュメントをご覧ください。
以上がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、 PHPの中国語サイトです!

関連する推奨事項:

php7 の php-fpm パラメータ設定に関する注意事項

以上がPHP はリフレクションを使用してクラスといくつかの基本的なアプリケーションを取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート