PHP-CPP 开发PHP扩展简单使用
PHP-CPP 安装
安装地址
文档
选择PHP-CPP的理由
C++ PHP扩展代码写法
#include <phpcpp.h>
#include <iostream>
using namespace std;
Php::Value zimuge_hello(Php::Parameters ¶ms)
{
Php::out << "测试01"<<std::endl;
int max=0,sum = 0;
max = params[0];
for(int i=0;i<max;i++) {
sum +=i;
}
return sum;
}
Php::Value zimuge_test(Php::Parameters ¶ms)
{
Php::out << "测试02"<<std::endl;
int max=0,sum = 0;
max = params[0];
for(int i=0;i<max;i++) {
sum +=i;
}
return sum;
}
Php::Value zimuge_Div(Php::Parameters ¶ms) {
if(params[1] == 0) {
throw Php::Exception("除数不能为0");
}
return params[0]/params[1];
}
Php::Value zimuge_getMax(Php::Parameters ¶ms) {
//调用外部函数写法
return std::max(params[0],params[1]);
}
int max(int num1, int num2)
{
// 局部变量声明
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
extern "C" {
PHPCPP_EXPORT void *get_module()
{
static Php::Extension extension("zimuge", "1.0");
extension.add<zimuge_hello>("zimuge_hello",{
Php::ByVal("a",Php::Type::Numeric,true),
});
extension.add<zimuge_test>("zimuge_test",{
Php::ByVal("a",Php::Type::Numeric,true),
});
extension.add<zimuge_Div>("zimuge_Div",{
Php::ByVal("a",Php::Type::Numeric,true),
Php::ByVal("b",Php::Type::Numeric,true),
});
extension.add<zimuge_getMax>("zimuge_getMax",{
Php::ByVal("a",Php::Type::Numeric,true),
Php::ByVal("b",Php::Type::Numeric,true),
});
return extension;
}
}
编译&安装
※ 假如你的扩展名字是 xxxx
1. make clean & make
2. 修改 php.ini
extesnion=xxxx.so
3. php-fpm 重启 kill -USR2 pidxxx
4. php --ri xxxx or php -m
确认扩展是否正确安装
PHP端使用方法
<?php
//FPM web端测试
echo zimuge_hello(100)."<br/>";
echo zimuge_test(1000)."<br/>";
echo zimuge_Div(1000,33)."<br/>";
echo zimuge_getMax(10,20)."<br/>";
本作品采用《CC 协议》,转载必须注明作者和本文链接