8 Développer PHP 4.0
Manuel PHP
. Introduction . Possibilités d'extension . Source Layout . Le système de squelette automatique de PHP . Créer une extension . Utiliser des extensions . Résolution de problèmes . Présentation des sources . Gestion des arguments . Créer des variables . Duplique le contenu d'une variable : le bâtisseur de copie. . Retourner des valeurs . Afficher des informations . Fonctions de démarrage et d'extinction . Appeler des fonctions utilisateurs ->Support du fichier d'initialisation File Support . Par où continuer? . Référence : quelques macros de configuration . API Macros
|
8.16 Support du fichier d'initialisation File Support
PHP 4 fournit un nouveau système pour le support du fichier d'initialisation. Il
est possible de spécifier des valeurs par défaut d'option de configuration directement
dans votre code, lire et modifier ces valeurs lors de l'exécution, et créer des
gestionnaires pour être prévenu lors de modifications de ces options.
Pour créer une section .ini dans votre propre module, utilisez les macros
PHP_INI_BEGIN()
pour marquer le début de cette section,
et
PHP_INI_END()
pour en marquer la fin. Entre les deux, vous pouvez
utiliser
PHP_INI_ENTRY()
pour créer des entrées.
PHP_INI_BEGIN() PHP_INI_ENTRY("premiere_entree_ini", "une chaîne de caractères", PHP_INI_ALL, NULL) PHP_INI_ENTRY("deuxieme_entree_ini", "2", PHP_INI_SYSTEM, OnChangeSecond) PHP_INI_ENTRY("troisieme_entree_ini", "xyz", PHP_INI_USER, NULL) PHP_INI_END()
La macro
PHP_INI_ENTRY()
accepte quatre paramètres :
le nom de l'option, la valeur, les droits de modification et un pointeur
sur un gestionnaire de modification. Le nom et la valeur doivent êter
spécifié sous forme de chaîne de caractères, quelque soit leur type réel.
Les droits sont regroupés en trois sections :
PHP_INI_SYSTEM
permet de modifier l'option uniquement dans le fichier
php.ini
;
PHP_INI_USER
permet les modifications
au moment de l'exécution, avec un fichier complémentaire de configuration qui
remplace la configuration du
php.ini
, comme par exemple
.htaccess
;
et
PHP_INI_ALL
qui permet la modification de l'option sans
aucune restriction. Il y a aussi un quatrième niveau de droits,
PHP_INI_PERDIR
, mais il n'est pas en service actuellement.
Le quatrième paramètre est constitué d'un pointeur sur un gestionnaire de modifications.
A chaque fois que ces options de configurations sont modifiées, ce gestionnaire est
appelé. Un tel gestionnaire doit être déclaré en utilisant la macro
PHP_INI_MH
:
PHP_INI_MH(OnChangeSecond); // gestionnaire pour "deuxieme_entree_ini"
// spécifiez les entrées ici
PHP_INI_MH(OnChangeSecond) {
zend_printf("Message lu, notre option a été modifiée en %s<br>", new_value);
return(SUCCESS);
}
La nouvelle valeur est fournie comme paramètre du gestionnaire, sous forme de
chaîne de caractères, dans la variable
new_value
. Lorsque vous
regardez la définition de
PHP_INI_MH
, vous trouvez plusieurs
paramètres :
#define PHP_INI_MH(name) int name(php_ini_entry *entry, char *new_value, uint new_value_length, void *mh_arg1, void *mh_arg2, void *mh_arg3)
Toutes ces définitions sont accessibles dans le fichier
php_ini.h
.
Votre gestionnaire de modification aura accès à la structure qui contient l'option
complète, sa nouvelle valeur, sa longueur, et trois arguments optionnels. Ces arguments
optionnels peuvent être spécifiés avec les macros
PHP_INI_ENTRY1
(qui permet un argument supplémentaire),
PHP_INI_ENTRY2
(qui permet deux arguments supplémentaires),
et
PHP_INI_ENTRY3
(qui permet trois arguments supplémentaires).
Le gestionnaire de modification doit être utiilsé pour mettre en cache les
valeurs initiales localement, afin d'accélérer les accès ultérieurs, ou bien
pour effectuer certaines tâches complémentaires. Par exemple, si une connexion
permanante est nécessaire à un module, et que l'utilisateur en modifie le nom
de serveur hôte, vous pourriez terminer automatiquement l'ancienne connexion et
en ouvrir une autre.
L'accès aux options d'initilisation peut aussi être réalisé avec les
macros suivantes :
Finalement, vous devez présenter vos options à PHP. Cela peut être fait dans lors du
démarrage et d'extinction du module, en utilisant les macros
REGISTER_INI_ENTRIES()
et
UNREGISTER_INI_ENTRIES()
:
ZEND_MINIT_FUNCTION(mymodule) {
REGISTER_INI_ENTRIES();
}
ZEND_MSHUTDOWN_FUNCTION(mymodule) {
UNREGISTER_INI_ENTRIES();
}
Sommaire :
|