Services webmasters
Partenaires
Jeux concours gratuits
 
Traitement des nombres d'arguments variables et des paramètres optionnels
<<<
Accéder aux arguments Traiter les arguments passés par référence
>>>

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.5 Accéder aux arguments

Pour accéder aux arguments, il est nécessaire que le type de chaque argument soit clairement défini. Encore une fois, la nature extrêmement dynamique de PHP introduit des couaks. Comme PHP ne fait aucune validation de type, il est possible que le script appelant passe n'importe quel type de données à vos fonctions. Si vous attendez un entier, rien n'empêche le programmeur de vous passer un tableau, et vice-versa. PHP ne s'en préoccupe pas.

Pour résoudre de problème, vous devez utiliser un jeu d'API pour forcer la conversion de type de chaque argument qui est passé (voyez Fonction de conversion ).

Note: Toutes les fonctions de conversion attendent une enveloppe **zval comme paramètre.

Note

Vous pouvez trouver une démonstration de ces conversions dans le fichier cross_conversion.php sur le CD ROM d'accompagnement. Conversions en PHP. illustre l'affichage.

En utilisant ces fonctions sur vos arguments, vous vous assurerez du type des données qui vous sont passées. Si le type de la valeur fournie ne correspond pas à celui que vous souhaitez, PHP force la valeur à une valeur de remplacement classique (chaînes vides, tableaux ou objets vides, 0 pour les nombres, FALSE pour les booléens), afin d'avoir toujours un état défini.

Voici un extrait du module présenté ci-dessus, qui effectue une conversion :


zval **parameter;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &parameter) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

convert_to_long_ex(parameter);

RETURN_LONG(Z_LVAL_P(parameter));
Après avoir lu le pointeur du paramètre, la valeur est convertie en long (un entier) qui sera aussi la valeur retournée par la focntion. Comprendre l'accès aux valeurs nécessite une présentation du type zval , dont les définitions sont présentés Définition du type zval . .

En fait, pval (défini dans php.h ) est simplement un alias de zval (défini dans zend.h ), qui lui-même fait référence à _zval_struct . C'est une structure très interessante. _zval_struct est la structure "principale" qui contient la valeur, son type et des informations de référence. La sous-structure zvalue_value est une union qui contient la valeur de la variable. Suivant le type de la variable, vous pouvez accéder à différents membres de l'union. Pour une description complète des deux structutres, voyez Structure Zend zval , Structure Zend zvalue_value et Constantes de type Zend Variable .

Pour accéder à la valeur d'un long, vous pouvez y accéder avec zval.value.lval , pour un double, vous pouvez y accéder avec zval.value.dval , et ainsi de suite... Comme toutes les valeurs sont stockées dans une union, accéder à un membre qui ne coresspond pas au type en cours retourne des valeurs sans aucun sens.

Accéder aux tableaux et objets est un peu plus compliqué, et sera discuté plus tard.

<< Accéder aux arguments >>
Traitement des nombres d'arguments variables et des paramètres optionnels Gestion des arguments Traiter les arguments passés par référence
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -