メソッドに応じて引数も可変ならcall_user_func_array()使えばいいだけじゃない?
そんな大層な話しか?30秒で書けるがw

function hoge()
{
  $methodArr = [
    'A' => ['a', 'b'],
    'B' => [],
    'C' => ['c', 'd'],
  ];

  foreach ($methodArr as $method => $params) {
    if ($result = call_user_func_array($method, $params)) {
      return $result;
    }
  }

  return false;
}