Sommaire
Gestion des arguments
Compter le nombre d'arguments
Lecture des arguments
L'ancienne technique de lecture des arguments (obsolète)
Cas des nombres variables de paramètres et des arguments optionnels
Accéder aux arguments
Cas des arguments passés par référence
Assurer la protection en écriture des autres paramètres
|
7.10.1 Compter le nombre d'arguments
Etant donné que PHP n'a pas de définition de fonction formelle
avec vérification syntaxique, et comme PHP gère les fonctions
à nombre d'arguments variables, il arrivera des occasions où
vous aurez à connaître le nombre d'arguments qui sont fournis
à la fonction appelée. Vous pouvez utiliser la macro
ZEND_NUM_ARGS dans ce case. Dans les versions
précédentes de PHP, cette macro lisait le nombre d'arguments passés
lors de l'appel de la fonction, en fonction du hash de la fonction,
ht, qui est passé dans la liste
INTERNAL_FUNCTION_PARAMETERS. Comme
ht lui même contient le nombre d'arguemnts
qui ont été passés à la fonction, ZEND_NUM_ARGS
a été réduite au rang de décoration (voyez sa définition dans
le fichier zend_API.h
). Mais c'est toujours
une bonne méthode que de l'utiliser, pour garder votre code
compatible avec les futures évolutions de l'API.
Note: l'ancien équivalent PHP de cette
macro était ARG_COUNT.
Le code suivant vérifie que le nombre d'arguments est correct :
if(ZEND_NUM_ARGS() != 2) WRONG_PARAM_COUNT;
Si la fonction n'est pas appelée avec deux arguments,
elle se termine avec un message d'erreur. Le bout de code
ci-dessus utilise la macro WRONG_PARAM_COUNT,
qui peut être utilisée pour générer des messages d'erreurs standards :
(voir <>).
 |
WRONG_PARAM_COUNT en action |
Cette macro affiche un message d'erreur par défaut et se termine avec
un retour à l'appelant. Ces définitions peuvent être trouvées dans
le fichier zend_API.h
et ressemble à ceci :
ZEND_API void wrong_param_count(void); #define WRONG_PARAM_COUNT { wrong_param_count(); return; }
Comme vous pouvez le voir, la macro appelle une fonction
interne appelée wrong_param_count qui est responsable
de l'affichage de l'alerte.
|