PHP では、拡張とは、PHP に新しい機能を追加する方法を指します。これにより、PHP の機能を拡張し、さまざまなアプリケーション シナリオに適応できます。 PHP 拡張機能は C 言語で記述されているため、C 言語に精通していることが拡張機能開発の基本要件です。
コードを PHP 拡張機能として他の人が利用できるようにしたい場合は、カスタム PHP 拡張機能を作成する必要があります。この記事では、基本的な PHP 拡張機能を作成する方法を説明します。
拡張機能の開発を開始する前に、PHP 自体と関連ツール チェーンを含む PHP 開発環境をインストールする必要があります。 PHP 公式 Web サイトにアクセスして PHP ソース コードをダウンロードし、コンパイルしてインストールすることも、コンパイルされたバイナリ パッケージを直接使用することもできます。
PHP をインストールした後、PHP C/C 拡張開発キット、phpize、その他のツールなどの PHP 開発ツール キットもインストールする必要があります。これらのツールは、PHP 拡張機能を迅速にコンパイルおよびビルドするのに役立ちます。
PHP 拡張機能は C 言語で記述されているため、C 言語を学習し、拡張機能に必要な API とデータ型に精通している必要があります。 , 拡張Cコードを書くため。ここでは、例として単純な加算関数を作成します。
拡張ディレクトリに、新しいソース コード ファイル addition.c を作成し、次の内容を記述します。
#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)
拡張機能の構築は、主に PHP に付属のコマンド ライン ツールを使用して行われます。拡張ディレクトリで、次のコマンドを実行します。
phpize ./configure make
これらのコマンドは、Makefile を自動的に生成し、コンパイルとリンクを行い、ダイナミック リンク ライブラリ (拡張ファイル) add.so を生成します。この時点で、phpinfo() 関数を使用して、拡張機能が生成されたかどうかを確認できます。
最後に、生成された拡張機能ファイル add.so を PHP モジュール ディレクトリにコピーし、php.ini ファイルを編集して拡張機能を有効にする必要があります。
sudo cp ./modules/addition.so /path/to/php/modules/ sudo echo "extension=addition.so" >> /path/to/php/php.ini
これでカスタム拡張機能の準備が整いました。これを使用すると、PHP コードで add() 関数を呼び出して加算計算を実行できます。
概要
カスタム PHP 拡張機能を作成するには、C 言語、PHP 拡張機能に必要な API とデータ型、および拡張機能のコンパイルとインストールに関する知識が必要です。 PHP 拡張機能の開発が初めての場合は、いくつかの単純な拡張機能から始めて、徐々にプログラミング スキルを向上させることができます。
以上がカスタム PHP 拡張機能を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。