8.8.4 Déclaration du bloc de fonctions Zend
Mainteant que vous avez déclaré les fonctinos qui seront exportées vers PHP, il faut
les introduire à Zend lui-même. Présenter la liste des focntions est fait en
utilisant un tableau de
zend_function_entry
. Ce tableau contient
toutes les fonctions qui sont rendues disponible à l'extérieur, avec le nom
de la fonction qui doit apparaître dans pHP, et son nom de fonction C. En
interne,
zend_function_entry
est déclarés comme dans
Déclaration interne de zend_function_entry . .
Dans l'exemple ci-dessus, la déclaration ressemble à :
zend_function_entry firstmod_functions[] = { ZEND_FE(first_module, NULL) {NULL, NULL, NULL} };
Vous pouvez voir que la dernière entrée de la liste est
{NULL, NULL, NULL}
.
C'est un jalon, destiné à Zend, pour qu'il puisse reconnaitre la fin de
la liste de fonctions exportées.
Note |
Vous
ne pouvez pas
utiliser les macros prédéfinies pour
créer le jalon final, car cela conduira à ce qu'il se réfère à la fonction
"NULL"!
|
La macro
ZEND_FE
(abbréviation de
'Zend Function Entrée') est remplacé par une structure dans
zend_function_entry
. Notez que ces macros introduises
un plan de nommage spécial pour vos fonctions : toutes vos
fonctions C seront préfixées avec
zif_
, ce qui signifie
que
ZEND_FE(first_module)
se référera à la fonction
C appelée
zif_first_module
. Si vous voulez mélanger
des appels aux macros avec des entrées codées en dur (une très mauvaise
pratique), gardez ça en tête.
Tip: Les erreurs de compilation qui font références à des fonctions
nommés
zif_*
font référence aux fonctions
définies avec
ZEND_FE
.
Macros de définition de fonctions montre une liste de macros que vous pouvez
utiliser pour définir des fonctions.
Note:
Vous ne pouvez pas utiliser
ZEND_FE
en conjonction avec
PHP_FUNCTION
, ou
PHP_FE
en
conjonctino avec
ZEND_FUNCTION
. Cependant, il est
parfaitement valide de mélanger des appels à
ZEND_FE
et
ZEND_FUNCTION
avec
PHP_FE
et
PHP_FUNCTION
lorsque vous restez dans le
même jeu de macro pour chaque fonction déclarée. Mais mélanger les
appels
n'est pas
recommandé; il est recommandé
de n'utiliser que les macros
ZEND_*
.
|