Services webmasters
Partenaires
Jeux concours gratuits
 
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.


zval **parameter_array[4];

/* lit le nombre de paramètres passés */
argument_count = ZEND_NUM_ARGS();

/* vérification du nombre minimal d'arguments (2 arguments) */
/* et du nombre maximal d'arguments (4 arguments) */
if(argument_count < 2 || argument_count > 5)
    WRONG_PARAM_COUNT;

/* Le nombre d'arguments est valide, nous pouvons les lire */
if(zend_get_parameters_array_ex(argument_count, parameter_array) != SUCCESS)
    WRONG_PARAM_COUNT;
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
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -