zephir-安装和初体验

前言

先在这里感谢各位zephir开源技术提供者

zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言。这是一个支持动态/静态类型的语言,熟悉PHP开发人员可以很好的进行开发。zephir这个名字的主要来源是(Zend Engine/PHP/Intermediate),今天首先介绍zephir的安装,接着会对zephir进行一些语法上面的介绍,希望大家喜欢!

注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术

附上:

喵了个咪的博客:w-blog.cn

zephir官网地址:http://zephir-lang.com/

github地址:https://github.com/phalcon/zephir

1. zephir安装

安装Zephir,请遵循以下步骤:

1.1 环境依赖

zephir主要依赖于下面环境

  • gcc >= 4.x/clang >= 3.x
  • re2c 0.13或更高版本
  • gnu 3.81或更高版本
  • autoconf 2.31或更高版本
  • automake 1.14或更高版本
  • libpcre3
  • php开发工具-phpize

如果你使用Ubuntu,你可以安装所需要的包:

$ sudo apt-get update
$ sudo apt-get install git gcc make re2c php5 php5-json php5-dev libpcre3-dev

由于Zephir是用PHP编写的需要已经安装了最新版本的PHP和它必须在您的控制台可用:

$ php -v
PHP 5.6.5 (cli) (built: Jan 24 2015 20:04:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

同时,确保你也安装了PHP开发库与PHP安装:

$ phpize -v
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

1.2 安装Zephir

目前Zephir编译器必须从Github克隆

$ git clone https://github.com/phalcon/zephir

运行Zephir安装程序(编译/创建解析器):

$ cd zephir
$ ./install-json
$ ./install -c

测试安装:

zephir help

会得到如下返回:

 _____              __    _
/__  /  ___  ____  / /_  (_)____/ /  / _ \/ __ \/ __ \/ / ___// /__/  __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_//_/Zephir version 0.9.2a-devUsage: command [options]Available commands:install             Installs the extension (requires root password)builddev            Generate/Compile/Install a Zephir extension in development modehelp                Displays this helpbuild               Generate/Compile/Install a Zephir extensioncompile             Compile a Zephir extensionstubs               Generates extension PHP stubsversion             Shows the Zephir versioninit [namespace]    Initializes a Zephir extensionfullclean           Cleans the generated object files in compilationapi [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]Generates a HTML APIgenerate            Generates C code from the Zephir codeclean               Cleans the generated object files in compilationOptions:-f([a-z0-9\-]+)     Enables compiler optimizations-fno-([a-z0-9\-]+)  Disables compiler optimizations-w([a-z0-9\-]+)     Turns a warning on-W([a-z0-9\-]+)     Turns a warning off

注意:当前最新开发版本在0.9.2a-dev稳定版为0.8.0b

2 Zephir初体验

还记得在开篇那个Helloword例子吗?我们先来简单介绍一下zephir编译机制在对例子介绍一下zephir的语法

2.1 编译/解释

每一种语言都有它自己的“Hello World!”示例,在此ZEPHIR介绍性的例子展示了这种语言的一些重要特性。

在ZEPHIR代码必须放在类。这种语言的目的是建立面向对象的库/框架,因此代码移出一类是不允许的。此外,需要一个名称空间:

namespace Test;class Hello
{public function say(){echo "Hello World!";}
}

一旦这类编译它产生以下代码gcc/clang/vc++:

EPHIR_INIT_CLASS(Test_Hello) {ZEPHIR_REGISTER_CLASS(Test, Hello, hello, test_hello_method_entry, 0);return SUCCESS;
}PHP_METHOD(Test_Hello, say) {php_printf("%s", "Hello World!");
}

实际上,它预计不需要使用Zephir的开发人员必须知道或者理解C编译器,然而开发人员使用Zephir的时候,如果你有任何经验php内部或C语言本身的了解,将会有一个更清晰的了解在。

2.2 进一步了解zephir的感觉

在下面的例子中,我们将描述足够的细节,所以你理解发生了什么。 我们的目标是给你一个编程在Zephir是什么样的感觉。 我们将探讨的细节 功能在后续章节。

下面的例子非常简单,它实现了一个类和一个小程序,检查方法 一个数组的类型

让我们更详细地解释一下代码,所以我们可以开始学习Zephir语法。 有很多细节在短短几行代码! 我们将解释一般的想法:

namespace Test;

/**
* MyTest (test/mytest.zep)
*/
class MyTest
{
public function someMethod()
{
/* 变量必须声明 */
var myArray;
int i = 0, length;

    /*创建一个数组 */let myArray = ["hello", 0, 100.25, false, null];/* 数组有多少个元素*/let length = count(myArray);/* 打印值类型 */while i < length {echo typeof myArray[i], "\n";let i++;}return myArray;
}

}

方法中,第一行使用“var”和“int”关键字用于声明一个变量在当地范围。 每一个变量用于方法必须用其各自的类型声明。 这个声明不是可选的, 它帮助编译器报告关于键入变量或变量的使用范围 通常在运行时错误结束。

动态变量是用的var关键字来声明。 这些变量可以分配和重新分配 不同的类型。 另一方面,我们有“i”和“length”整数静态类型的变量 只能有这种类型的值在整个程序执行。

与PHP相比,你不需要把美元符号($)在变量名前面。

Zephir遵循相同的评论约定为Java,c#、c++,等等。 / /注释的一条线,而/ 注释 /可以跨行。默认变量是不可变的,这意味着Zephir预计大多数变量 不变。 变量保持初始值可以优化的编译器静态常量。 当需要更改变量的值,必须使用关键字“let”:

/* 创建一个数组 */
let myArray = ["hello", 0, 100.25, false, null];

默认情况下,PHP数组是动态的,它们可能包含不同类型的值。 函数从PHP用户可以Zephir代码中调用,函数的示例中“count” 被调用时,编译器可以执行优化避免这个调用,因为它已经知道的大小 数组:

/*数组有多少个元素 */
let length = count(myArray);

括号在控制流语句是可选的,您也可以使用它们,如果你感觉更舒服。

while i < length {echo typeof myArray[i], "\n";let i++;
}

PHP仅适用于动态变量,方法总是返回动态变量,这意味着如果一个 返回静态类型的变量,在PHP的一面,你会得到一个动态变量,可以使用 在PHP代码。

注意,内存是由编译器自动管理的,所以你不需要分配或释放 记忆像C,比PHP以类似的方式工作。

3. 总结

我们来回顾一下zephir这个名字的来源是(Zend Engine/PHP/Intermediate),今天主要介绍了zephir的安装,和他的一些基本特性信息,在后面的章节将会进入正章,来从一步一步深入了解zephir!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

zephir技术交流:246348908 欢迎大家的加入!

感谢zephir开发人员:

zephir-安装和初体验相关推荐

  1. oracle数据库dblink创建语句_3场直播丨达梦DM8数据库安装部署初体验、新基建下的国产数据库应用和发展趋势、Oracle外部表创建与使用...

    1. 循序渐进-达梦DM8数据库安装部署初体验-07/16 简介: 本讲座主要介绍达梦DM8数据库软件安装与数据库创建. 2019年5月,DM8发布. 基于新技术发展的思考和市场的需求,坚持实用性.通 ...

  2. 3场直播丨达梦DM8数据库安装部署初体验、新基建下的国产数据库应用和发展趋势、Oracle外部表创建与使用...

    1. 循序渐进-达梦DM8数据库安装部署初体验-07/16 简介: 本讲座主要介绍达梦DM8数据库软件安装与数据库创建. 2019年5月,DM8发布. 基于新技术发展的思考和市场的需求,坚持实用性.通 ...

  3. Docker的准备,安装,初体验

    想实践一下Docker,手头是个windows电脑,由于想在linux下实践,所以第一步是装虚拟机,我用的是VMware Workstation 12 Player,虚拟机文件用的是ubuntu-16 ...

  4. Go入门(一)之环境安装与初体验

    一.Go环境安装 操作系统:win10 下载链接:https://golang.google.cn/dl/ 学习文档:http://www.topgoer.com 官方文档:https://study ...

  5. windows7升级安装之初体验

    这周终于下定决心安装windows7.因为之前已经习惯了使用正版激活的操作系统了,所以在没有确实可以激活之前还是不太轻易的安装. 由于工作的原因机器上安装了很多的软件,因为不希望重新格式化安装操作系统 ...

  6. 1-TDengine安装与初体验

    [本文正在参与 "拥抱开源 | 涛思数据 TDengine有奖征稿] https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857 ...

  7. Exchange server 2013 安装部署初体验

    经过尝试几次的Exchange 2013 的安装,终于把Exchange 2013 给安装上了,相对以前版本的Exchange ,Exchange 2013 的安装区别不大,都越来越走向简化,接下来, ...

  8. 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

    文章目录 写在前面 HBuilderX HBuilderX 优势 HBuilderX 安装 uni-app 初体验 写在最后 写在前面 聚沙成塔--每天进步一点点,大家好我是几何心凉,不难发现越来越多 ...

  9. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  10. Felgo之初体验--安装与运行

    前言 上一篇文章中介绍了Felgo的用途,大致知道了Felgo可以用来干些什么,在本篇中我们介绍下Felgo的安装,以及创建我们的第一个Felgo程序. 软件下载 首先我们在官网下载相应平台的安装包, ...

最新文章

  1. Linux的归档及压缩,Linux的cron时间计划任务, NTP网络时间协议 , 查看网络连接...
  2. 实现电脑与NUC之间进行远程登录
  3. 多线程编程实战(一)
  4. curl head请求_CURL速查
  5. Oracle错误ORA-01800——ORA-01899
  6. java如何爬取304_HTTP 304错误的详细讲解
  7. HarmonyOS之数据管理·融合搜索的应用
  8. 程序员必须关注的技术趋势,内附PDF下载链接
  9. 第二篇 Python图片处理模块PIL(pillow)
  10. python configparser模块_Python标准库之ConfigParser模块
  11. PNG免扣苹果IPHONE手机模型样机,让一切简单一点!
  12. java 嗅探器_网页资源嗅探器(ESFSoft URL Sniffer)
  13. r语言html爬虫,用R语言三行代码写爬虫
  14. 倾斜摄影在农房一体不动产测量中的技术流程(Smart3D+EPS)
  15. 2019年首批!网易易盾加固系统通过中国反网络病毒联盟认证
  16. TalkingData Ad Tracking开启反作弊模式
  17. Elasticsearch最佳实践之使用场景
  18. 我如何零基础转行成为一个自信的前端
  19. qlv转mp4绿色版工具
  20. eclipse4.6安装tomcate插件 Eclipse4.6(neno)配置Tomcat插件的两种方式

热门文章

  1. jmeter压测指标
  2. 安装程序出现 NSIS ERROR的错误提示
  3. 数字价值观察室 实录 | 数字化在企业内部的“对立”和“统一”
  4. 电脑只有浏览器可以上网其他软件都无法联网怎么办?
  5. 关于CSDN云主机从购买到上手体验的真实感受与些许建议 | CSDN开发云
  6. 10年资深架构师推荐21本技术好书
  7. 用Vue3写个气泡对话框组件
  8. 台式电脑设置意外断电后自启动
  9. 计算机桌面不满屏怎样解决,图文教您电脑屏幕显示不满屏【操作措施】
  10. 按键精灵 网页操作插件