第12期-使用Zephir语言给PHP编写一个C语言扩展

Zephir语言的官方地址:https://zephir-lang.com/

关于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 http://cn2.php.net/get/php-7.1.3.tar.gz/from/this/mirror -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 http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz

tar xzvf http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz

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 https://getcomposer.org/download/1.4.1/composer.phar

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

结果如下:

得到我们希望的结果。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180824A0OF3S00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券