#zephir-安装和初体验#php
##前言## 先在这里感谢各位zephir开源技术提供者c++
zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言。这是一个支持动态/静态类型的语言,熟悉PHP开发人员能够很好的进行开发。zephir这个名字的主要来源是**(Zend Engine/PHP/Intermediate)**,今天首先介绍zephir的安装,接着会对zephir进行一些语法上面的介绍,但愿你们喜欢!git
注:笔者水平有限,说的不正确的地方但愿你们多多指正,一同交流技术github
附上:编程
喵了个咪的博客:w-blog.cnjson
zephir官网地址:http://zephir-lang.com/小程序
github地址:https://github.com/phalcon/zephirc#
##1. zephir安装##api
安装Zephir,请遵循如下步骤:数组
###1.1 环境依赖###
zephir主要依赖于下面环境
若是你使用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-dev Usage: command [options] Available commands: install Installs the extension (requires root password) builddev Generate/Compile/Install a Zephir extension in development mode help Displays this help build Generate/Compile/Install a Zephir extension compile Compile a Zephir extension stubs Generates extension PHP stubs version Shows the Zephir version init [namespace] Initializes a Zephir extension fullclean Cleans the generated object files in compilation api [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]Generates a HTML API generate Generates C code from the Zephir code clean Cleans the generated object files in compilation Options: -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开发人员: