by shigemk2

当面は技術的なことしか書かない

リフレクション その2 引数つきのprivateメソッドを実行する

前回
リフレクション - by shigemk2

前回リフレクションを利用することで、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, 'コイツ');

書いたなコイツ

まあこういう感じです。