分享

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

 啊司com 2017-03-19

Zephir语言的官方地址:https:///


关于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./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/automake/automake-1.15.tar.gz

tar xzvf http://ftp./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:///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

结果如下:

得到我们希望的结果。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多