2010-10-04 3 views
1

Je suis une classe comme celui-ci (ce qui est un exemple résumé):PHP: Fonction: Permettre au plus X paramètres

class Example(){ 
    function test($param1,$param2,$param3=NULL){ //param3 is optional 
     //stuff 
    } 
} 

Cette fonction est appelée dynamiquement (depuis l'URL,/exemple/test/a/b/appellera exemple :: test (a, b))

if(is_callable(array($class, $funcname))) 
    call_user_func_array(array($class, $funcname),$params); 

/exemple/test/n'est pas autorisé, en raison des paramètres manquants (retournera 404)

/exemple/test/a/est également interdit

/exemple/test/a/b/est autorisé depuis param3 de $ est facultative

/exemple/test/a/b/c/est autorisé

MAIS:

/exemple/test/a/b/c/d/appellera aussi la fonction, car PHP ignore juste le 4ème paramètre.

Comme la fonction est appelée dynamiquement, le script ne sait pas combien de paramètres sont autorisés avant d'appeler la fonction. Mais j'ai besoin du script pour retourner une erreur 404 s'il y a trop de paramètres. Je ne pouvais pas trouver un moyen de trouver le maximum. quantité de paramètres avant d'appeler réellement la fonction.

Celui-ci fonctionne:

function test($param1,$param2,$param3=NULL,$error=NULL){ //param3 is optional; 
     if(isset($error))$this->getErrorController()->notFoundHandler(); //will throw a 404 if $error is set and stop the script. 
     //stuff 
    } 

Y at-il une meilleure façon de le faire?

+0

Eliasdx, s'il vous plaît upvote et accepter des réponses. Cela rend les gens plus susceptibles d'aider. – webbiedave

Répondre

4

vous pouvez vérifier la valeur de retour de func_num_args() à l'intérieur de votre fonction.

+0

anglais URL: http://php.net/manual/fr/fonction.func-num-args.php – chigley

+0

whoops, fixe, merci – greg0ire

Questions connexes