PHP扩展开发,一般来说需要一定的C基础。但是本篇文章介绍另一种扩展开发的方式。使用Zephir开发PHP扩展。
1.基础准备
1.1环境和软件
以CentOS系统为例,执行:
yum install gcc make re2c autoconf automake
没有PHP的同学需要装一下PHP,本篇不再介绍
1.2 安装解析器
拉取代码并编译成扩展
mkdir /phptemp
cd /phptemp
git clone git://github.com/phalcon/php-zephir-parser.git
cd php-zephir-parser
//这里替换成你的PHP所在目录
/usr/local/php/bin/phpize
//这里替换成你的PHP所在目录
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
//这里替换成你的PHP所在目录
/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/
vim php.ini添加:
extension="zephir_parser.so"
1.3下载编译软件
cd /phptemp
wget https://github.com/phalcon/zephir/releases/download/0.12.19/zephir.phar
//重命名为可执行文件,并添加到环境变量中(也可以挪到已添加到环境变量中的目录下)
mv zephir.phar zephir
添加成功时,在任意目录执行zephir,都可以看到如下效果。
_____ __ _
/__ / ___ ____ / /_ (_)____
/ / / _ \/ __ \/ __ \/ / ___/
/ /__/ __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
/_/
2正式开始
2.1初始化扩展目录
zephir init Huai
cd huai/huai
2.2编辑自己的第一个扩展文件
vim common.zep
namespace Huai;
class Common
{
public static function say()
{
echo "hello world!";
}
}
wq保存退出
2.3构建包
cd ..
处于和config.json平级的目录,执行
zephir build //注意,用root权限运行
2.4将生成的扩展添加到php.ini目录中
生成的文件在config.json平级的目录ext/modules里
将so文件挪到自己常用的so目录。
这里将目录替换成自己的php扩展所在目录
mv huai.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/
vim php.ini //增加自己的扩展
extension="huai.so"
2.5 试着执行一下
wq保存并重启PHP-FPM
php -m 查看扩展是否已加载。
echo Huai\Common::say();
输出:hello world!
是不是很简单,Enojoy it!
网友评论