Puoi anche non controllare il numero di parametri, che potrebbe essere magari una limitazione. Soprattutto se nella funzione definisci i parametri (e li definisci non nullabili) e poi non passi il numero di parametri corretto, php stesso ti da errore... in un mvc tale errore verrebbe intercettato dal framework e gestito nella maniera opportuna
Codice PHP:
//il tuo controller
class Controller{
public function metodo($arg1,$arg2){
echo "arg1: $arg1 \n";
echo "arg2: $arg2 \n";
$args = func_get_args();
echo "args: ".print_r($args,true);
}
}
//nel routing
$method = 'metodo';
$args = array("hello","world","others","arguments");
$controller = 'Controller';
//usando la reflection
$reflector = new ReflectionClass($controller);
if($reflector->hasMethod($method)){
$reflectorMethod = $reflector->getMethod($method);
if($reflectorMethod->isPublic()){ //potrebbe essere statico volendo(?)
//istanzio il controller
$mController = new $controller();
//richiamo il metodo
$reflectorMethod->invokeArgs($mController,$args);
}else{
echo "metodo $method non è pubblico";
}
}else{
echo "metodo $method non esiste";
}