## zephir簡介
zephir是一門可以編寫和編譯php拓展的腳本語言疮丛,它是動態(tài)/靜態(tài)類型的語言噪叙,很多的特性跟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
```
> 會發(fā)現(xiàn)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`
> 會發(fā)現(xiàn)ext/目錄下已經(jīng)生成了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();
}
```