使用Zephir语言给PHP编写一个C语言扩展

2022-10-11 20:28:04 148 0
魁首哥

关于Zephir


Zephir, an open source, high-level language designed to ease the creation and maintainability of extensions for PHP with a focus on type and memory safety.

Zephir is a language that addresses the major needs of a PHP developer trying to write and compile code that can be executed by PHP. It is a dynamically/statically typed, some of its features can be familiar to PHP developers.

Zephir是一个开源的 高级语言 (区别于汇编等机器语言),它的设计是为了减轻PHP原生扩展的创建难度和可维护性,另外还带来了强类型与内存安全的支持。

Zephir是一门定位于大多数想通过编写和编译能够被PHP执行的代码的PHPer需求的语言。它是一种动态和静态类型结合的语言,对于PHP来说,它的一些功能可能会感觉时曾相识。

安装Zephir


为了构建一个PHP扩展和使用Zephir,必须先满足如下条件:

  • gcc >= 4.x/ clang >= 3.x

  • re2c 0.13 or later

  • gnu make 3.81 or later

  • autoconf 2.31 or later

  • automake 1.14 or later

  • libpcre3

  • php development headers and tools

P.S.本文是猿哥在windows上的vagrant可移植环境下进行的安装过程。

第1步,下载并编译最新的PHP源码包:

wget -O php-7.1.3.tar.gz

第2步,解压 php-7.1.3.tar.gz:

php xzvf php-7.1.3.tar.gz

第3步,查看编译选项

sudo ./configure -h

第4步,安装指定版本的依赖

sudo yum install re2c libxml2-devel git openssl-devel tree

wget

tar xzvf

cd automake-1.15

sudo ./configure –with-openssl && sudo make && sudo make install

第5步,开始默认安装

sudo ./configure && sudo make -j2 && sudo make install -j2

sudo cp php.ini-development /usr/local/lib/php.ini

第6步,安装 composer ,选择手动安装的方式:

wget

sudo mv composer.phar /usr/bin/composer

sudo chmod a+x /usr/bin/composer

测试composer安装结果:

第7步,下载Zephir的C源代码仓库,由于GitHub的git clone速度实在不行,猿哥选择,下载zip文件:

下载完毕之后,解压并进入到Zephir目录。

第8步,执行如下安装与测试命令:

./install -c && zephir help

结果展示:

第9步,快速开始第一个PHP扩展”hello,world!”,初始化一个扩展程序骨架如下:

cd ~ && mkdir PHP_Ext_Dev && cd PHP_Ext_Dev

zephir init utils && tree

第10步,在~/PHP_Ext_Dev/utils/utils目录下编写第一个zep类Greeting.zep,代码如下:

namespace Utils;

class Greeting

{

public statis function say()

{

echo “Hello,world!”;

}

}

第11步,构建zep类,并进行接下来的扩展安装流程,如下:

zephir build

sudo vim /usr/local/lib/php.ini (在文件最后面增加一行:extension=uitls.so)

php -m (测试模块的加载情况):

第12步,进行最后的测试工作,进行如下操作:

cd ~

vim test.php

加入如下内容:

Utils\Greeting::say();

echo “\n”;

执行:

php test.php

结果如下:

收藏
分享
海报
0 条评论
148
上一篇:PHP7内存性能优化的思想精髓 下一篇:33 PHP 设计模式系列「委托模式( Delegation)」

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码