文档章节

zephir简介

六飞鞋影魔
 六飞鞋影魔
发布于 2017/04/06 16:58
字数 305
阅读 10
收藏 0
点赞 0
评论 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();

}

© 著作权归作者所有

共有 人打赏支持
六飞鞋影魔
粉丝 1
博文 11
码字总数 5446
作品 0
深圳
程序员
zephir-(5)类型

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

喵了_个咪 ⋅ 2016/03/07 ⋅ 0

[Zephir官方文档翻译之二] 为什么选择 Zephir?

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

风一样的世界 ⋅ 2014/09/26 ⋅ 0

zephir-(9)类和对象2

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

喵了_个咪 ⋅ 2016/03/08 ⋅ 0

[Zephir开发实践]用Zephir编写PHP扩展实践

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

暗夜在火星 ⋅ 2014/06/26 ⋅ 0

2.zephir基础语法

首先,zephir的代码必须放在一个类中,一个文件必须并且只能包含一个类,类必须位于命名空间下。 文件结构 mylibrary/ 其中router.zep和exception.zep就是代码文件(你可以想象,把.zep换...

吾爱 ⋅ 2014/04/08 ⋅ 0

Smarty前端模板引擎 - 我看过的PHP开源框架

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

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

zephir-(10)内置函数

先在这里感谢各位zephir开源技术提供者 嗨!大家好呀,今天要和大家一同学习zephir的内置函数,学过PHP的同学都知道,PHP的函数非常强大,当然这也是我们喜欢PHP的一个方面,但是如果想想这些函数都...

喵了_个咪 ⋅ 2016/03/10 ⋅ 0

zephir-(8)类和对象1

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

喵了_个咪 ⋅ 2016/03/08 ⋅ 0

zephir-(2)安装和初体验

先在这里感谢各位zephir开源技术提供者 zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言。这是一个支持动态/静态类型的语言,熟悉PHP开发人员可以很好的进行开发。...

喵了_个咪 ⋅ 2016/02/28 ⋅ 0

zephir-(1)开篇介绍

先在这里感谢各位zephir开源技术提供者 笔者在学习phalcon的过程中了解到,phalcon2.x版本通过了zephir重写,第一感觉是zephir这么牛逼?笔者赶紧尝试了一下,果不其然非常简单的就能写出一个C扩...

喵了_个咪 ⋅ 2016/02/26 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 27分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 45分钟前 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 56分钟前 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部