• 技术文章 >后端开发 >php教程

    解析Zephir写PHP扩展(一)

    藏色散人藏色散人2021-06-11 09:01:26转载704
    本篇文章给大家介绍《解析Zephir写PHP扩展(一)》。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    众所周知 要写PHP扩展需要用c或者c++ 语言 配合 ext_skel 实现

    这样对一个没接触过c++的PHPer很不友好 于是就有了Zephir

    zephir的口号是:会写php,就会写php扩展

    要构建PHP扩展并使用Zephir,需要满足以下要求:

    • Zephir parser >= 1.3.0
    • A C编译器,例如 gcc
      • re2c 0.13.6 或更高版本
      • PHP development headers and tools 对于基于 linux 的系统, 您还需要:
      • GNU make 3.81 or later
      • autoconf 2.31 或更高版本
      • automake 1.14 或更高版本
      • libpcre3

    所有编译安装完PHP 还需要 安装一些依赖

    yum install git gcc make re2c php php-json php-dev libpcre3-dev build-essential

    06191f4dbb4b39d22be2395fe2c03a8.png

    先要安装 解释器

    https://github.com/phalcon/php-zephir-parser

    ab1841947f16ed787ba0d5a73524a16.png

    git clone github.com/phalcon/php-

    cd php-zephir-parser

    2c1e96d1675e9ab9f6a7840b78c7248.png

    phpize

    338f19a1905849ba648302a05e1e22d.png

    ./configure

    ed4f0a1229365cf9bf9e18878b41e9f.png

    make

    698fa786b605839791418d84c3e993a.png

    没有安装 re2c

    手动安装下

    wget sourceforge.net/project tar zvxf re2c-0.16.tar.gz cd re2c-0.16 ./configure && make && make install

    008cc7cc1234599e6fe784bd40314c6.png

    tar zvxf re2c-0.16.tar.gz

    cd re2c-0.16 ./configure && make && make install

    73ecb5f3d06ed7f067c1fdaaa777ddc.png

    sudo make install

    a66a2068d69eecaa190ccd7febd5cfd.png

    再 编辑下 ini 加上

    extension=zephir_parser.so

    c444fc9b1645b51b5448edb2cfb618a.png

    安装 zephir.phar

    wget https://github.com/zephir-lang/zephir/releases/download/0.13.0-alpha-1/zephir.pha

    df51de7da4184161b3af8495d5290a1.png

    安装成功

    安装好Zephir 就可以进行coding阶段

    想实现一个 array_where 扩展方法来实现 数组过滤 筛选

    $array = [];
    $array[0]['name'] = 'zhangsan';
    $array[0]['chinese'] = '89';
    $array[0]['math'] = '95';
    $array[0]['english'] = '88';
    $array[1]['name'] = 'lisi';
    $array[1]['chinese'] = '91';
    $array[1]['math'] = '86';
    $array[1]['english'] = '90';
    $where=array(
            array('k'=>'name','conditions'=>'=','v'=>'zhangsan'),
            array('k'=>'chinese','conditions'=>'>','v'=>'86'))
    $new_array = array_where(array,$where);
    var_dump($new_array);

    类似于mysql中的 多条件查询 过滤。

    如果用原生的PHP写法 那就是循环foreach 效率很低。

    本文经原作者PHP崔雪峰同意,发布在php中文网,原文地址:https://zhuanlan.zhihu.com/p/352504439

    以上就是解析Zephir写PHP扩展(一)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:PHP崔雪峰,如有侵犯,请联系admin@php.cn删除
    专题推荐:Zephir PHP
    上一篇:教你玩转linux下部署php项目-Apache、php、mysql关联(分享) 下一篇:教你玩转php中laravel框架(分享)
    第16期线上培训班

    相关文章推荐

    • golang怎么编写PHP扩展• ubuntu怎么安装php扩展包• 宝塔面板下怎么安装Mosquitto-php扩展• linux怎么安装ffmpeg-php扩展• 详解如何安装php扩展-amqp

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网