前回リフレクションを利用することで、privateメソッドもクラスの外から実行出来るという
話をしたけど、引数つきのprivateメソッドを実行するときはどうしたらいいんだろうか。
invokeで引数を指定することで、メソッドの引数を指定することが出来る。
<?php class Hoge { private function aaa($a) { print_r("書いたな" . $a . PHP_EOL); } } $method = new ReflectionMethod('Hoge', 'aaa'); $method->setAccessible(true); // 実行する。ここでprivateメソッドの引数を指定する。 $method->invoke(new Hoge, 'コイツ');
書いたなコイツ
まあこういう感じです。