文档章节

zephir简介

六飞鞋影魔
 六飞鞋影魔
发布于 2017/04/06 16:58
字数 305
阅读 11
收藏 0

zephir简介

zephir是一门可以编写和编译php拓展的脚本语言,它是动态/静态类型的语言,很多的特性跟php非常的相似

依赖

  • gcc >= 4.x/clang >= 3.x
  • re2c 0.13+
  • gnu make 3.81+
  • autoconf 2.31+
  • automake 1.14+
  • libpcre3
  • php development headers and tools
$ sudo apt-get update
$ sudo apt-get install git gcc make re2c php5 php5-json php5-dev libpcre3-dev

zephir 安装

$ git clone https://github.com/phalcon/zephir.git
$ cd zephir
$ bash install -c
$ zephir help

 _____              __    _
/__  /  ___  ____  / /_  (_)____
  / /  / _ \/ __ \/ __ \/ / ___/
 / /__/  __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
         /_/

Zephir version 0.9.6a-dev-aef205594b

bash install -c 会把zephir/bin/zephir 拷贝到/usr/local/bin目录下

php 拓展之hello world

$ cd /web/
$ mkdir zephir_test
$ zephir init hw

会发现hw 目录下面会有 ext/ hw/ config.json

在hw子目录下编写helloworld.zep文件

namespace Hw;

class HelloWorld
{
    public static function say()
    {
        var a = "hello world";
        echo strtoupper(a);
    }
}

$ zephir build

会发现ext/目录下已经生成了php拓展的c语言代码

$ cd ext
$ bash install
$ /web/zephir_test/hw/ext$ bash install
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

生成hw.so文件, 最后再加入php.ini

extenstion=hw.so

运行helloworld拓展

$ php -r "Hw\HelloWorld::say();"
HELLO WORLD

zephir 生成的C语言代码在ext/hw/helloworld.zep.c

PHP_METHOD(Hw_HelloWorld, say) {

        zval *a = NULL, *_0;

        ZEPHIR_MM_GROW();

        ZEPHIR_INIT_VAR(a);
        ZVAL_STRING(a, "hello world", 1);
        ZEPHIR_INIT_VAR(_0);
        zephir_fast_strtoupper(_0, a);
        zend_print_zval(_0, 0);
        ZEPHIR_MM_RESTORE();

}

© 著作权归作者所有

共有 人打赏支持
上一篇: Mysql 体系结构
下一篇: Xhprof
六飞鞋影魔
粉丝 1
博文 11
码字总数 5446
作品 0
深圳
程序员
私信 提问
zephir-(5)类型

先在这里感谢各位zephir开源技术提供者 Zephir既可以使用动态类型也可以使用静态类型,这是zephir独特的一点,今天笔者就来和大家一同了解zephir中的基本的类型使用. 注:笔者水平有限,说的不正...

喵了_个咪
2016/03/07
176
0
[Zephir官方文档翻译之二] 为什么选择 Zephir?

为什么选择 Zephir? 目前的PHP应用必须使用得稳定性、性能、和功能性保持平衡。 每一个PHP应用是建立在大量的通用组件上的,而这些组件又基于大量的其它应用。 这些通用的组件可能是一个类/...

风一样的世界
2014/09/26
0
0
zephir-(9)类和对象2

先在这里感谢各位zephir开源技术提供者 zephir全面使用对象编程,这就是为什么拓展的使用方式只能是方法和类,你也将看到,大部分的时间,运行时错误引发异常,而不是致命错误或警告。今天讲一...

喵了_个咪
2016/03/08
46
0
[Zephir开发实践]用Zephir编写PHP扩展实践

场景描述 首先,还是强烈推荐一下Phalcon这个框架。 由于对这个框架很感兴趣,所以看了其官方文档,并在先前用PHP根据其思想写了两个Phalcon核心类,见链接: #年前福利#Phalcon框架部分核心...

暗夜在火星
2014/06/26
0
0
Smarty前端模板引擎 - 我看过的PHP开源框架

Smarty Smarty可以说是我接触PHP这门语言用到的第一个开源框架,当时在Smarty的帮助下,很好地完成了项目的开发,也很好地遵循了MVC的模式。但是到了后来,慢慢地发现,很多人都很熟悉Smart...

暗夜在火星
2014/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
34分钟前
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
34分钟前
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
34分钟前
1
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
34分钟前
1
0
java框架学习日志-3

这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重...

白话
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部