PHP 初期化拡張方法: まず [php_hello.h] のユーザー空間関数近くのプロトタイプ宣言を変更し、次に [hello.c] ファイルを変更し、ファイルの先頭に [# を追加します。 hello.c] include]; 最後に、INI の値を使用するように [hello_world] を変更します。
PHP で拡張機能を初期化する方法:
php を使用して拡張機能の構成を初期化します。 ini
Zend エンジンには、ini 値を管理する 2 つの方法が用意されています。
php.ini で拡張機能の値 hello.greeting
を定義するとします。これには、hell_world()
で使用される値が保持されます。関数 挨拶文字列。 hello.c
と php_hello.h
にコードを追加し、hell_module_entry
構造にいくつかの重要な変更を加える必要があります。
関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで
1. 最初のステップ: php_hello.h
を変更します。ユーザー空間関数
PHP_MINIT_FUNCTION(hello); PHP_MSHUTDOWN_FUNCTION(hello);// 初始化关键点 PHP_FUNCTION(hello_world);// 其它通用 PHP_FUNCTION(hello_long);
2 のプロトタイプ宣言に近い手順 2: hello.c
ファイル
を変更して ## を削除します現在のバージョンでは #hello_module_entry これを次のリストに置き換えます:
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. これで、ファイルの先頭にある
#include のみが必要になります hello.c
INI をサポートする正しいヘッダー ファイルをアクティブ化できるように、 の横に
#include を追加します。
#ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "php_ini.h" #include "php_hello.h"4. 最後に、
hello_world を変更して、
INI の値を使用できます:
PHP_FUNCTION(hello_world) { RETURN_STRING(INI_STR("hello.greeting"),1); }ただし、
INI_STR() から返された値をコピーする必要があります。これは、PHP 変数スタックに入る前は静的文字列であるためです。実際、返された文字列を変更しようとすると、PHP 実行環境が不安定になったり、クラッシュしたりすることがあります。
INI_STR() を使用して
hello.greeting を取得しています。エントリ 現在の文字列。
INI_INT などの関数を使用できます。設定パラメータが異なるため、
ini_set のような関数が発生する可能性があります。 使いにくい。
以上がPHPで拡張機能を初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。