SommaireTelecharger la documentationChapitre suivantChapitre precedent  

  .: News :.: Edito :.: Scripts :.: Forum :.: Erreurs :.: Jobs :. 
 
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.


Chapitre précédentChapitre suivantAccueil nexen.net