8.8.3 Déclaration des fonctions exportées
Pour déclarer des fonctions qui seront exporétes (c'est à dire, rendue disponibles
dans pHP comme fonction native), Zend fournit un jeu de macros. Une simple
déclaration comme celle-ci :
ZEND_FUNCTION ( my_function );
ZEND_FUNCTION
déclare une nouvelle fonction C, qui est
compatible avec les standards internes de Zend. Cela signifie que la fonction
est de type
void
et accepte
INTERNAL_FUNCTION_PARAMETERS
(une autre macro) comme paramètres. De plus, elle préfixe le nom de la fonction
avec
zif
. La version longue de la définition ci-dessus est la
suivante :
void zif_my_function ( INTERNAL_FUNCTION_PARAMETERS );
Après remplacement de
INTERNAL_FUNCTION_PARAMETERS
,
cela devient :
void zif_my_function( int ht , zval * return_value , zval * this_ptr , int return_value_used , zend_executor_globals * executor_globals );
Comme l'interpréteur et l'exécuteur ont été séparé l'un de l'auter,
dans le package principal de PHP, un nouveau jeu de macros et
de focntion a évolué : les API Zend. Comme les API Zend ont pris
en charge certaines responsabilité qui appartenait auparavant à
PHP, un bon nombre de fonction de PHP ont été réduites à de
simple alias de macros, qui effectuent les appels à l'API Zend.
La politique recommandée est d'utiliser l'API Zend à chaque fois
que possible, car l'ancienne API n'est conservée que pour des raisons
de compatibilité. Par exemple, les types
zval
et
pval
sont identiques.
zval
est
la définition pour Zend.
pval
est la définition pour
PHP (en fait,
pval
est actuellement un alias de
zval
).
Comme la macro
INTERNAL_FUNCTION_PARAMETERS
est une macro Zend, la déclaration ci-dessus contient un
zval
. Lorsque vous écrivez du code, il faut toujours utiliser les
zval
pour être compatible avec la nouvelle API Zend API.
La liste de paramètres de cette déclaration est très importante. Gardez
bien ces paramètres en tête, et voyez Paramètres Zend pour les fonctions PHP pour plus
de détails.
|