如何创建 PHP 扩展以与 C 函数交互
创建 php 扩展与 c 函数交互的步骤:创建 php 扩展项目并编写扩展源代码,调用 c 函数。编写 phpinfo 函数以检查扩展。配置扩展并安装。测试扩展,在 phpinfo 中应看到 "my extension" 已启用。
如何创建 PHP 扩展以与 C 函数交互
要创建 PHP 扩展并使其与 C 函数交互,您需要遵循以下步骤:
1. 创建 PHP 扩展项目
mkdir my_extension | |
cd my_extension |
2. 创建 PHP 扩展源文件
vim my_extension.c
3. 编写扩展源代码
#include <php.h> | |
PHP_FUNCTION(my_c_function) { | |
// ... 调用 C 函数 ... | |
} | |
PHP_MINIT_FUNCTION(my_extension) { | |
// 初始化扩展 | |
zend_register_internal_function("my_c_function", my_c_function, 0); | |
return SUCCESS; | |
} |
4. 编写 PHPinfo 函数以检查扩展
PHP_FUNCTION(my_extension_info) { | |
php_info_print_table_start(); | |
php_info_print_table_row(2, "My Extension", "enabled"); | |
php_info_print_table_end(); | |
} | |
PHP_MINIT_FUNCTION(my_extension) { | |
// ... | |
zend_declare_function(NULL, "my_extension_info", my_extension_info, 0, 0, 0, 0); | |
// ... | |
} |
5. 配置扩展
cd .. | |
phpize | |
./configure | |
make | |
make install |
6. 测试扩展
创建一个名为 test.php 的文件:
phpinfo(); |
运行它:
php test.php
在 PHPInfo 输出中,您应该看到 "My Extension" 被列为已启用。
实战案例
让我们创建一个扩展,它暴露一个名为 factorial 的 C 函数,该函数计算给定数字的阶乘。
在 my_extension.c 中添加以下代码:
#include <php.h> | |
int factorial(int n) { | |
if (n == 0) { | |
return 1; | |
} | |
return n * factorial(n - 1); | |
} | |
PHP_FUNCTION(factorial) { | |
int n; | |
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &n) == FAILURE) { | |
RETURN_NULL(); | |
} | |
RETURN_LONG(factorial(n)); | |
} |
重新配置、构建和安装扩展:
phpize | |
./configure | |
make | |
make install |
现在您可以在 PHP 中使用 factorial 函数:
echo factorial(5); // 输出: 120 |
以上就是如何创建 PHP 扩展以与 C 函数交互的详细内容,更多请关注其它相关文章!