说实话,我也是今天才知道 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 必须意淫。
- 安装 Xcode 命令行工具
xcode-select --install
- 安装 autoconf re2c automake libtool 等依赖,如果你没有安装git 记得安装git。
brew install autoconf brew install automake brew install libtool brew install re2c
- 下载源代码并安装
Ok,这里就安装完毕了,你可以运行git clone https://github.com/phalcon/zephir cd zephir/json-c && sh autogen.sh && ./configure && \ make && make install cd ../ ./install -c
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 方式开发,哈哈,你可以自己意淫一下。
发表评论 取消回复