Sommaire
Présentation des sources
Structure de module
Inclusions des fichiers d'entête
Déclarer les fonctions exportées.
Déclaration du bloc de fonctions Zend
Déclaration du bloc de module Zend
Création de get_module
Implémentation de toutes les fonctions exportées
Conclusion
|
7.9.5 Déclaration du bloc de module Zend
Ce bloc est stocké dans une structure zend_module_entry et
contient toutes les informations nécessaires pour décrire le contenu
de ce module Zend. Vous pouvez voir les définitions interne de ce module dans
<>.
Déclaration interne de zend_module_entry. |
typedef struct _zend_module_entry zend_module_entry;
struct _zend_module_entry {
unsigned short size;
unsigned int zend_api;
unsigned char zend_debug;
unsigned char zts;
char *name;
zend_function_entry *functions;
int (*module_startup_func)(INIT_FUNC_ARGS);
int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS);
int (*request_startup_func)(INIT_FUNC_ARGS);
int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS);
void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);
char *version;
int (*global_startup_func)(void);
int (*global_shutdown_func)(void);
[ Le reste de la structure n'est pas utile ici ]
};
|
Dans notre exemple, cette structure est implémenté comme ceci :
zend_module_entry firstmod_module_entry =
{
STANDARD_MODULE_HEADER,
"First Module",
firstmod_functions,
NULL, NULL, NULL, NULL, NULL,
NO_VERSION_YET,
STANDARD_MODULE_PROPERTIES,
};
C'est la méthode la plus basique et la plus minimale que vous pourrez
jamais utiliser. Le nom du module est
First Module, puis la liste de fonctions est
référencée, suivi des fonctions de démarrage et d'extinction qui sont
marquées comme inutilisées.
Pour des raisons de référencement, vous pouvez trouve la liste
de macos impliquées dans les démarrages et terminaisons dans
<>. Elles ne sont pas utilisées
dans nos exemples basiques, mais elles seront exploitées plus
tard. Nous vous recommandons d'utiliser ces fonctions pour
déclarer vos fonctions de démarrage et terminaisons, car ces
dernières réclament des arguments spéciaux (INIT_FUNC_ARGS et
SHUTDOWN_FUNC_ARGS), qui seront automatiquement
inclus dans votre déclaration de fonction lorsque vous utilisez
ces macros. Si vous déclarez vos fonctionnalités à la main,
et que les développeurs PHP décident de changer la liste
d'argument nécessaire, vous devrez changer votre source pour
rester compatible. Avec la macro, cela n'arrivera pas.
Macros de déclaration des fonctions de démarrage et extinction
>
>
Macro |
Description |
ZEND_MINIT(module) |
Déclare une fonction pour le démarrage d'un module. Le nom
généré sera de la forme zend_minit_<module>
(par exemple, zend_minit_first_module). Utilisez
la en conjonction avec ZEND_MINIT_FUNCTION.
|
ZEND_MSHUTDOWN(module) |
Déclare une fonction pour la terminaison d'un module. Le nom
généré sera de la forme zend_mshutdown_<module>
(par exemple, zend_mshutdown_first_module). Utilisez
la en conjonction avec ZEND_MSHUTDOWN_FUNCTION.
|
ZEND_RINIT(module) |
Déclare une fonction pour le démarrage d'une requête. Le nom
généré sera de la forme zend_rinit_<module>
(par exemple, zend_rinit_first_module). Utilisez
la en conjonction avec ZEND_RINIT_FUNCTION.
|
ZEND_RSHUTDOWN(module) |
Déclare une fonction pour la terminaison d'une requête. Le nom
généré sera de la forme zend_rshutdown_<module>
(par exemple, zend_rshutdown_first_module). Utilisez
la en conjonction avec ZEND_RSHUTDOWN_FUNCTION.
|
ZEND_MINFO(module) |
Déclare une fonction pour l'affichage d'informations lorsqu'utilisé
avec phpinfo. Le nom généré sera
de la forme zend_info_<module>
(par exemple, zend_info_first_module). Utilisez
la en conjonction avec ZEND_MINFO_FUNCTION.
|
|