背景: 初期の Kohana フレームワークでは、実行中に例外が発生した場合、クラス内の before after、コントローラー、およびアクション関数は、リフレクション クラスを使用して、あらかじめ決められた順序で柔軟に実行できます。提供された例外キャプチャは出力をキャプチャします。これには、クラスがオブジェクトを変更した後にパラメータを渡すという問題が伴います。この PHP は、対応する関数も提供します。リフレクション クラスのメソッド ReflectionMethod::invokeArgs。
次のようにコード スニペットを使用します:
$class = new ReflectionClass('Person'); // 建立 Person这个类的反射类 $instance = $class->newInstanceArgs($args); // 相当于实例化Person 类 public stdclass newInstance(mixed* args)//测试传入的对象是否为该类的一个实例
リフレクションに関連するその他の記事を参照してください:
http://flandycheng.blog.51cto.com/855176/ 326021/
http://www.phperz.com/article/14/0809/17371.html
自分で調べてください: http://justwinit.cn/post/2090/
ReflectionMethod::invokeArgs
(PHP 5 >= 5.1.0)
ReflectionMethod::invokeArgs — パラメーターを指定して実行します
説明
publicmixedReflectionMethod::invokeArgs(object $object, array $args)
配列を使用してメソッドにパラメータを渡し、メソッドを実行します。
パラメータ
オブジェクト
呼び出しメソッドのオブジェクト (静的オブジェクトの場合は null に設定します)
args
配列メソッドのパラメータを使用して送信されます。
戻り値
メソッドの戻り値
エラー/例外
オブジェクトで指定されたインスタンスがメソッドを実行できない場合、ReflectionException 例外が生成されます。
メソッド呼び出しが失敗すると、ReflectionException が生成されます
例
例 #1 ReflectionMethod::invokeArgs() example
class HelloWorld {
public function SayHelloTo($name) {
return 'Hello ' . $name;
}
}
$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invokeArgs(new HelloWorld(), array('Mike'));
?>
上記のルーチンは次の出力を行います:
Hello Mike
Notes
Note:
If関数にパラメータがあり、参照である場合、それらは参照によって渡される必要があります。
ReflectionMethod::invoke() - 呼び出し
__invoke()
call_user_func_array() - コールバック関数を呼び出し、配列パラメータを次のように渡します。コールバック関数
のパラメーター: http://help.bitscn.com/php/reflectionmethod.invokeargs.html