phpでメソッドを動的に呼びたいとき(インスタンスメソッド、staticメソッド)

phpを使っていて、動的にstaticなメソッドをcallしたいことはよくある。
そんなときは、call_user_func()が便利だ。

class hoge{
  static public function foo($foo){
     print 'hogehoge is '.$foo;
  }

$class = "hoge";
$method = "foo";
$foo = "test"; //引数

//$class::$method($foo); <- シンタックスエラーが出る
call_user_func(array($class,$method),$foo);

}

ちなみにインスタンスメソッドの呼び出し方は下記の通り

class hoge{
  public function foo($foo){
     print 'hogehoge is '.$foo;
  }

$class = "hoge";
$method = "foo";
$foo = "test"; //引数

$obj = new $class;
$obj->$method($foo);

}

これを使えば結構な処理が共通化できるし、デザインパターンに適応させることができる。
なかなか便利なので自分用へのメモ