En PHP, l'extension fait référence à un moyen d'ajouter de nouvelles fonctions à PHP, qui peuvent étendre les capacités de PHP et s'adapter à divers scénarios d'application. Les extensions PHP sont écrites en langage C, la connaissance du langage C est donc une condition de base pour le développement d'extensions.
Si vous souhaitez rendre votre code accessible à d'autres personnes en tant qu'extension PHP, vous devez créer une extension PHP personnalisée. Cet article va vous montrer comment créer une extension PHP de base.
Avant de commencer à développer des extensions, vous devez installer l'environnement de développement PHP, qui comprend PHP lui-même et les chaînes d'outils associées. Vous pouvez accéder au site officiel de PHP pour télécharger le code source PHP, le compiler et l'installer, ou utiliser directement le package binaire compilé.
Après avoir installé PHP, vous devez également installer les kits d'outils de développement PHP, tels que le kit de développement d'extension PHP C/C++, phpize et d'autres outils. Ces outils vous aident à compiler et à créer rapidement des extensions PHP.
Étant donné que les extensions PHP sont écrites en langage C, vous devez apprendre le langage C et vous familiariser avec l'API et les types de données requis pour l'extension afin d'écrire du code C étendu. Ici, nous prenons comme exemple la création d'une fonction d'addition simple :
Dans le répertoire de l'extension, créez un nouveau fichier de code source addition.c et écrivez le contenu suivant :
#include "php.h" // 定义函数原型 PHP_FUNCTION(addition); // 定义模块信息结构体 zend_module_entry addition_module_entry = { STANDARD_MODULE_HEADER, "addition", NULL, NULL, NULL, NULL, NULL, NULL, "1.0", STANDARD_MODULE_PROPERTIES }; // 定义函数参数 ZEND_BEGIN_ARG_INFO_EX(arginfo_addition, 0, 0, 2) ZEND_ARG_INFO(0, a) ZEND_ARG_INFO(0, b) ZEND_END_ARG_INFO() // 定义函数 PHP_FUNCTION(addition) { // 定义变量 int a, b; long result; // 从参数中获取值 ZEND_PARSE_PARAMETERS_START(2, 2) Z_PARAM_LONG(a) Z_PARAM_LONG(b) ZEND_PARSE_PARAMETERS_END(); // 计算结果 result = a + b; // 返回结果 RETURN_LONG(result); } // 注册函数入口 zend_function_entry addition_functions[] = { PHP_FE(addition, arginfo_addition) PHP_FE_END }; // 构造扩展 zend_module_entry *get_module(void) { return &addition_module_entry; } // 扩展初始化函数 PHP_MINIT_FUNCTION(addition) { return SUCCESS; } // 扩展关闭函数 PHP_MSHUTDOWN_FUNCTION(addition) { return SUCCESS; } // 扩展信息函数 PHP_MINFO_FUNCTION(addition) { php_info_print_table_start(); php_info_print_table_header(2, "addition support", "enabled"); php_info_print_table_end(); } // 定义模块 zend_module_entry addition_module_entry = { STANDARD_MODULE_HEADER, "addition", addition_functions, // 注册扩展的函数入口 PHP_MINIT(addition), PHP_MSHUTDOWN(addition), NULL, NULL, PHP_MINFO(addition), "1.0", STANDARD_MODULE_PROPERTIES }; // 将扩展注册到PHP中 ZEND_GET_MODULE(addition)
Build l'extension main Cela se fait à l'aide de l'outil de ligne de commande fourni avec PHP. Dans le répertoire d'extension, exécutez les commandes suivantes :
phpize ./configure make
Ces commandes généreront automatiquement un Makefile, compileront et lieront, et généreront une bibliothèque de liens dynamiques (fichier d'extension) addition.so. À ce stade, vous pouvez utiliser la fonction phpinfo() pour vérifier si l'extension a été générée.
Enfin, vous devez copier le fichier d'extension généré addition.so dans le répertoire du module PHP et modifier le fichier php.ini pour activer l'extension :
sudo cp ./modules/addition.so /path/to/php/modules/ sudo echo "extension=addition.so" >> /path/to/php/php.ini
Votre extension personnalisée est maintenant prête à être utilisée et peut être utilisée dans le code PHP. Appelez la fonction addition() pour effectuer des calculs d’addition.
Résumé
La création d'une extension PHP personnalisée nécessite une connaissance du langage C, de l'API et des types de données requis pour les extensions PHP, ainsi que des connaissances en matière de compilation et d'installation d'extensions. Si vous débutez dans le développement d'extensions PHP, vous pouvez commencer avec quelques extensions simples et améliorer progressivement vos compétences en programmation.
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!