Fork me on GitHub

使用zephir语言开发PHP扩展


Zephir是专门用来开发PHP扩展的一种领域特定语言(DSL),是Phalcon团队为他们的第二版框架开发而专门编写的。废话不多说,直接进入正题。

安装

安装过程在其官网页面有很详细的描述,这里就不再赘述。

开发第一个扩展

在Zephir安装完成后,命令行执行zephir help可以确认其是否安装成功,以及查看一些常用的选项。

初始化

进行项目开发的第一件事就是初始化,生成项目的基本骨架。 要开发一个名为utils的扩展,就需要在工作空间下执行以下命令来生成所需的项目文件。

zephir init utils

这个命令会在当前文件夹下生成一个utils目录以及很多初始化的文件和文件夹。

  • utils/ext/目录下包含的是编译器生成扩展所需的代码。
  • utils/utils/目录下放置我们要编写的Zephir源码。
  • utils/config.json是用来控制Zephir和这个扩展的行为的配置文件,可以这以后慢慢了解。
utils/
├── config.json
├── ext
│   └── kernel
│       ├── array.c
│       ├── array.h
│       ├── assert.c
│       ├── assert.h
│       ├── backtrace.c
│       ├── backtrace.h
│       ├── concat.c
│       ├── concat.h
│       ├── debug.c
│       ├── debug.h
│       ├── exception.c
│       ├── exception.h
│       ├── exit.c
│       ├── exit.h
│       ├── extended
│       │   ├── array.c
│       │   ├── array.h
│       │   ├── fcall.c
│       │   └── fcall.h
│       ├── fcall.c
│       ├── fcall.h
│       ├── file.c
│       ├── file.h
│       ├── filter.c
│       ├── filter.h
│       ├── globals.h
│       ├── hash.c
│       ├── hash.h
│       ├── iterator.c
│       ├── iterator.h
│       ├── main.c
│       ├── main.h
│       ├── memory.c
│       ├── memory.h
│       ├── object.c
│       ├── object.h
│       ├── operators.c
│       ├── operators.h
│       ├── output.c
│       ├── output.h
│       ├── persistent.c
│       ├── persistent.h
│       ├── README.md
│       ├── require.c
│       ├── require.h
│       ├── session.c
│       ├── session.h
│       ├── string.c
│       ├── string.h
│       ├── time.c
│       ├── time.h
│       ├── variables.c
│       └── variables.h
└── utils

4 directories, 53 files

编写

进入utils/utils/目录,创建一个名为greeting.zep的文件。

namespace Utils;

class Greeting
{
    public static function say()
    {
        return "Hello world!";
    }
}

构建

进入utils/目录(也就是有config.json文件的项目根目录),执行以下命令编译和生成扩展。

zephir build

如果一切顺利,在命令执行完毕后就会看到下面的输出:

...
Extension installed!
Add extension=utils.so to your php.ini
Don't forget to restart your web server

接着把extension=utils.so这一行加到cli的php.ini中,执行php -m就应该可以看到有utils这个扩展了。
执行php -r 'echo utils\Greeting::say(),"\n";',如果可以输出Hello world!就说明扩展已经安装成功。


上篇: SSL/TLS概览 下篇: 迁移到PHP7.0的一些事项(扩展兼容方面)

站内搜索