Maison >développement back-end >Problème PHP >Comment initialiser des extensions en PHP ?
Comment initialiser l'expansion PHP : modifiez d'abord la déclaration du prototype à côté de la fonction de l'espace utilisateur dans [php_hello.h] puis modifiez le fichier [hello.c] puis ajoutez un [#] en haut du fichier ; fichier [hello.c] include] ; enfin, modifiez [hello_world] pour utiliser la valeur de INI.
Comment initialiser l'extension en PHP :
Initialiser la configuration de l'extension via php.ini
Le moteur Zend propose deux façons de gérer les valeurs ini.
Supposons que vous souhaitiez définir une valeur dans php.ini pour votre extension, hello.greeting
, qui contient la chaîne de salutation qui sera utilisée dans la fonction hell_world()
. Vous devez ajouter du code à hello.c
et php_hello.h
et apporter quelques modifications clés à la structure hell_module_entry
.
Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise
1 Étape 1 : Modifier php_hello.h
à proximité de la fonction de l'espace utilisateur Prototype. déclaration
PHP_MINIT_FUNCTION(hello); PHP_MSHUTDOWN_FUNCTION(hello);// 初始化关键点 PHP_FUNCTION(hello_world);// 其它通用 PHP_FUNCTION(hello_long);
2. Étape 2 : Modifier le fichier hello.c
pour supprimer le hello_module_entry
dans la version actuelle et le remplacer par la liste suivante :
zend_module_entry hello_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STRANDARD_MODULE_HEADER, #endif PHP_HELLO_WORLD_EXTENAME, hello_functions, PHP_MINIT(hello), PHP_MSHUTDOWN(hello), NULL,NULL,NULL, #if ZEND_MODULE_API_NO >= 20010901 PHP_HELLO_WORLD_VERSION, #endif STANDARD_MODULE_PROERTIES } PHP_INI_BEGIN() PHP_INI_ENTRY("hello.greeting","hello world",PHP_INI_ALL,NULL) PHP_INI_END() PHP_MINIT_FUNCTION(hello) { REGISTER_INI_ENTRIES(); return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(hello) { UNREGISTER_INI_ENTRIES(); return SUCCESS; }
3. Maintenant, il vous suffit d'ajouter un hello.c
à côté de ceux #include
en haut du fichier #include
, pour que le fichier d'en-tête correct qui prend en charge INI peut être activé :
#ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "php_ini.h" #include "php_hello.h"
4. Enfin, vous pouvez modifier hello_world
pour utiliser la valeur de INI
:
PHP_FUNCTION(hello_world) { RETURN_STRING(INI_STR("hello.greeting"),1); }
MAIS : vous copierez la valeur renvoyée par INI_STR()
. En effet, avant d'entrer dans la pile de variables PHP, il s'agit d'une chaîne statique. En effet, si vous essayez de modifier la chaîne renvoyée, l'environnement d'exécution PHP deviendra instable voire plantera.
Résumé :
utilise en fait INI_STR()
pour obtenir la chaîne actuelle de l'entrée hello.greeting
.
Si vous souhaitez obtenir d'autres paramètres, vous pouvez utiliser quelque chose comme INI_INT
, etc. Étant donné que les paramètres sont définis différemment, des fonctions comme ini_set
ne sont pas faciles à utiliser.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!