编写 PHP 动态链接库可以使用 C 语言扩展来实现。下面是一个简单的示例,演示如何编写一个将两个数字相加的 PHP 扩展。
首先,创建一个名为 add_numbers.c
的 C 文件,其中包含以下代码:
#include <php.h>
PHP_FUNCTION(add_numbers)
{
long num1, num2, sum;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ll", &num1, &num2) == FAILURE) {
return;
}
sum = num1 + num2;
RETURN_LONG(sum);
}
zend_function_entry add_numbers_functions[] = {
PHP_FE(add_numbers, NULL)
PHP_FE_END
};
zend_module_entry add_numbers_module_entry = {
STANDARD_MODULE_HEADER,
"add_numbers",
add_numbers_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
"1.0",
STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(add_numbers)
然后,使用以下命令将其编译为动态链接库:
gcc -shared -o add_numbers.so -I/path/to/php/headers add_numbers.c
其中,/path/to/php/headers
为 PHP 头文件的路径。
最后,在 PHP 中可以使用以下代码加载该动态链接库并调用其函数:
<?php
if (!extension_loaded("add_numbers")) {
dl("add_numbers.so");
}
$result = add_numbers(2, 3);
echo $result; // 输出 5
?>