ホームページ  >  記事  >  バックエンド開発  >  これは反省の効果も得られます。

これは反省の効果も得られます。

WBOY
WBOYオリジナル
2016-06-13 13:41:54877ブラウズ

これにより、リフレクションの効果も実現できます

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php
class UserClass{
    public function userMethod($userParameter='default'){
        echo 'invoke success!!!';
    }
}
/****************************反射*********************************/
$className ='UserClass';
$functionName='userMethod';
    $reflection = new ReflectionClass($className);
    if($reflection->isUserDefined()){
        if($reflection->hasMethod($functionName)){
            $method = $reflection->getMethod($functionName);
            if($method->isStatic()){
                $method->invoke(null);
            }else{
                $instance = $reflection->newInstance();
                $method->invoke($instance);
            }
        }
    }
/****************************反射*********************************/
/*****************************************************************/
$user=new $className();
$user->$functionName();
/*****************************************************************/
?>

クラス名を構成ファイルから動的にロードし、対応する型のインスタンスを作成できます。効果は同じですが、反射を使うのが少し面倒です。個人的な意見ですので、批判・修正をお願いします。

-----解決策---------
親切。学んだ。
Java の反映メカニズム
http://baike.baidu.com/view/1865203.htm

実際、「反映メカニズム」の目的を考えれば文句は言えないかもしれませんPHPについては詳しくありません。
------解決策------------------
初めて学び、反省を理解する
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。