说实话,我也是今天才知道 Zephir 这个项目。我是今天才发现 Phalcon 框架升级到2.0了,因为要用它开发点东西。才看到人家用 Zephir 重写了。我都不知道我有多落后。

0X01

抽了点时间看了下,然后在 windows 上用 Docker 测试了一下,不错。当然也做了一个 Dockerfile 分享给大家,便于大家开发部署
# zephir lang Dockerfile
FROM ubuntu:14.04
# 签名啦
MAINTAINER widuu "admin@widuu.com"
# 变换阿里云镜像源
RUN  mv /etc/apt/sources.list /etc/apt/sources.list.backup
ADD ./sources.list /etc/apt/sources.list
# 更新镜像源 
RUN apt-get update
# 安装开发环境
RUN apt-get  install gcc make re2c libpcre3 libpcre3-dev php5 php5-dev php5-json -y
# 安装ssh server
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 安装git
RUN apt-get install git -y
# clone zephir 并安装
RUN cd /root && \
        git clone https://github.com/phalcon/zephir && \
        cd zephir && \
        ./install-json && \
        ./install -c

# 设置root ssh远程登录密码为docker
RUN echo 'root:docker' | chpasswd
EXPOSE 22
EXPOSE 80
EXPOSE 443

# SSH终端服务器作为后台运行
CMD ["/usr/sbin/sshd", "-D"]
在 Docker 中只需要使用 如下命令即可
docker build -t zephir:1.0 ./
docker run -i -p 端口:22 -t zephir:1.0 
ssh root@ip -p 端口  # 账号 root 密码 docker 就可以直接在里边测试开发了。

0X02

在MAC OS 中安装开发环境,本人个人电脑是 MAC ,所以 MAC 必须意淫。
  1. 安装 Xcode 命令行工具
    xcode-select --install
    
  2. 安装 autoconf re2c automake libtool 等依赖,如果你没有安装git 记得安装git。
    brew install autoconf 
    brew install automake
    brew install libtool
    brew install re2c
    
  3. 下载源代码并安装
    git clone https://github.com/phalcon/zephir
    cd zephir/json-c && sh autogen.sh && ./configure && \
    make && make install 
    cd ../
    ./install -c
    
    Ok,这里就安装完毕了,你可以运行 zephir 测试一下。

0X03

我感觉其实 zephir 语法像是 swift 和 php 结合体,其实它做的就是 zep -> C 连接转换器。不说了,写个简单的列子,测试一下试试。
zephir init widuu && cd widuu/widuu && vim service.zep
代码如下:
namespace Widuu;

class Service{

    protected _service;

    public  function _set(string name,object obj) -> int{
        if (typeof obj != "object") {
            throw new \Exception("type error!!");
        }
        let this->_service[name] = obj;
        return 1;
    } 

    public  function _get(string name){
        if (!isset this->_service[name]) {
            return 0;
        }
        return this->_service[name];
    }

    public  function _del(string name){
        let this->_service[name] = null;
    }

}

cd .. && zephir build && sudo vim /etc/php.ini  // 加入extension=widuu.so
重启 apache 测试,vim index.php
<?php

class string{

    public function test(){
        echo "hello word";
    }
}

$service = new Widuu\Service();
// 故意写错类型
try{
    $service->_set('string',"222");
}catch(Exception $e){
    echo $e->getMessage();
}
// 注册服务
$service->_set('string',new string());
// 获取对象
$s = $service->_get('string');
// 测试
$s->test();
OK,hello word 出来了,这个开发起来真的太简单了,不需要再熟悉 ZEND API,不用再考虑那么多,譬如 内存 空间 指针 等等,反正很强大,如果按照 mvc 方式开发,哈哈,你可以自己意淫一下。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部