ext-php-rs 是一个用于构建PHP扩展的RUST库,比起其他的php的绑定库,该库使用起来 更加的方便和快捷。
官方宣称的特性为:
- 易于使用,内置的宏抽象了 zend API,特别是参数类型交互
- 轻量级,该库会自动编写胶水代码,只需要写功能即可。
- 可扩展,可以使用
IntoZval
和FromZval
定义自己的类型用于参数和返回类型。
迄今为止, 使用rust写php扩展,并没有太好的方式与php进行交互,建议使用rust写 基础类库。
ext-php-rs 是一个用于构建PHP扩展的RUST库,比起其他的php的绑定库,该库使用起来 更加的方便和快捷。
官方宣称的特性为:
IntoZval
和 FromZval
定义自己的类型用于参数和返回类型。迄今为止, 使用rust写php扩展,并没有太好的方式与php进行交互,建议使用rust写 基础类库。
本文使用 Solder
库来实现PHP扩展程序,它是基于 php-rs
库的试验性项目,实现了php扩展的函数处理。 满足了字符串和数字类型基本要求。
soder 源库地址为 github , 这里使用的是 fork 的库, github.com/erasin/solder。
2020-09-17 : 项目 XX/php-rust 中提供了更多的类型处理。简化函数注册流程。
使用 cargo 来创建项目,然后创建编译配置文件.cargo/config
cargo new --lib rs-tool
cd rs-tool
mkdir .cargo
touch config
编辑 .cargo/config
,遵循toml格式。
[build]
rustflags = ["-C", "link-args=-Wl,-undefined,dynamic_lookup"]
Chronos , PHP 时间日历处理库,零依赖。
使用 composer 安装
php composer.phar require "cakephp/chronos:^2.0"
步骤和原理
打开 PHP 官网下载 选择需要的版本,比如 PHP 7.2.31。
wget https://www.php.net/distributions/php-7.2.31.tar.gz
tar xvf php-7.2.31.tar.gz
cd ./php-7.2.31