コントローラへのルーティングなどコマンドパターンの実装で変数に応じて動的なメソッドの呼び出しをしたくなることがある。
そういう時に便利なPHPの可変関数。
文字列(変数の中身含む)をメソッドや関数名として扱える。※ユーザ入力値を使う場合はセキュリティには注意
例
class SaveDataClass{
public function cmd_load(){
// 処理
echo __FUNCTION__.PHP_EOL;
}
public function cmd_save(){
// 処理
echo __FUNCTION__.PHP_EOL;
}
}
$cmd_part = 'load';
$cmd_whole = 'cmd_save';
$obj = new SaveDataClass();
$obj->{"cmd_{$cmd_part}"}();// $obj->cmd_load();
$obj->$cmd_whole();// $obj->cmd_save();