Ancienen méthode de lecture des arguments (obsolète) <<< |
Traitement des nombres d'arguments variables et des paramètres optionnels | Accéder aux arguments >>> |
8.9 Gestion des arguments 8 Développer PHP 4.0 Manuel PHP . Déterminer le nombre d'arguments . Lire les arguments . Ancienen méthode de lecture des arguments (obsolète) ->Traitement des nombres d'arguments variables et des paramètres optionnels . Accéder aux arguments . Traiter les arguments passés par référence . Assurer les autres paramètres contre l'écriture |
8.9.4 Traitement des nombres d'arguments variables et des paramètres optionnels
Si votre fonction doit accepter un nombre variable d'arguments, les exemples de code ci-dessus sont parfois sous-optimuax. Vous devez créer une ligne appelant zend_get_parameters_ex pour chaque nombre d'arguments possible, ce qui est souvent frustrant. Dans ce cas, vous pouvez utiliser la fonction zend_get_parameters_array_ex , qui accepte le nombre d'arguments en paramèters, et un tableau dans lequel les stocker.
Tout d'abord, le nombre d'arguments est testé pour s'assurer qu'il est valide. Après
cela,
zend_get_parameters_array_ex
est appelée pour remplir
la variable
parameter_array
avec un pointeur valide vers les valeurs
des arguments.
Une utilisation très habile de cette technique est accessible dans le code de fsockopen , dans le fichier ext/standard/fsock.c , disponible dans Implémentation en PHP du nombre variable d'arguments avec fsockopen(). . Ne paniquez pas si vous ne connaissez pas toutes les focntions dans ce source : nous y viendrons progressivement. fsockopen accepte deux, trois, quatre ou cinq paramètres. Après la déclaration obligatoire des variables, la fonction vérifie que le nombre d'argument est valide. Puis, il utilise le mécanisme de 'fall through' du switch() pour traiter ces arguments. switch() commence avec le nombre maximal d'arguments, c'est à dire cinq. Puis, il traite le cas de quatres arguments passés, puis de trois, en omettant simplement d'utiliser break . Une fois que tous les cas sont passés en revue, switch() est terminé, et il traite le nombre minimum d'arguments avec lequel la fonction doit être invoquée, c'est à dire deux. Ce type de traitement a plusieurs étages, similaire à un escalier, permet de gérer proprement et facilement les fonctions à nombre d'arguments variables. |
<< | Traitement des nombres d'arguments variables et des paramètres optionnels | >> |
Ancienen méthode de lecture des arguments (obsolète) | Gestion des arguments | Accéder aux arguments |