Maison >développement back-end >Problème PHP >Comment initialiser des extensions en PHP ?

Comment initialiser des extensions en PHP ?

coldplay.xixi
coldplay.xixioriginal
2020-07-01 13:19:282745parcourir

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 des extensions en PHP ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie php MySQLi ?Article suivant:Que signifie php MySQLi ?