SommaireTelecharger la documentationChapitre suivantChapitre precedent  

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


};
> >
Entrée Description

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_&lt;module&gt; (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_&lt;module&gt; (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_&lt;module&gt; (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_&lt;module&gt; (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_&lt;module&gt; (par exemple, zend_info_first_module). Utilisez la en conjonction avec ZEND_MINFO_FUNCTION.


Chapitre précédentChapitre suivantAccueil nexen.net