如果你时常关注PHP框架Phalcon,那么应该知道Phalcon的团队为了更好的开发Phalcon,开发了一门高级语言——Zephir。
Zephir,一种开源的高级语言,旨在简化PHP扩展的创建和可维护性,重点关注类型和内存安全性。
如果你没有C/C++语言的基础,又需要以PHP扩展的方式开发业务,那么可以选择Zephir。
使用Zephir开发扩展的环境很容易搭建,按照官方文档步骤,可以很快的把环境准备好。而且最新版本的Zephir已经提供.phar文件,下载这个文件添加进path环境变量就能开始开发了。
[root@ef40a04d7af1 ~]# zephir
_____ __ _
/__ / ___ ____ / /_ (_)____
/ / / _ \/ __ \/ __ \/ / ___/
/ /__/ __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
/_/
Zephir 0.11.11 by Andres Gutierrez and Serghei Iakovlev (b661a58)
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--dumpversion Print the Zephir version — and don't do anything else
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
api Generates a HTML API based on the classes exposed in the extension
build Generates/Compiles/Installs a Zephir extension
clean Cleans any object files created by the extension
compile Compile a Zephir extension
fullclean Cleans any object files created by the extension (including files generated by phpize)
generate Generates C code from the Zephir code without compiling it
help Displays help for a command
init Initializes a Zephir extension
install Installs the extension in the extension directory (may require root password)
list Lists commands
stubs Generates stubs that can be used in a PHP IDE
下面使用Zephir开发一个简单PHP扩展—Hutils—来介绍基本开发流程。
1. 初始化扩展目录
zephir init Hutils
cd hutils && tree -L 2
//会生成如下目录结构
.
|-- config.json
|-- ext
| `-- kernel
`-- hutils
2. 编写扩展代码
进入hutils/hutils/目录,创建一个common.zep文件。
namespace Hutils;
class Common
{
public static function say()
{
echo "hello world!";
}
}
3. 编译扩展
zephir build
Preparing for PHP compilation...
Preparing configuration file...
Compiling...
Installing...
Extension installed.
Add "extension=hutils.so" to your php.ini
! [NOTE] Don't forget to restart your web server
然后在php.ini中添加extension=hutils.so后,就可以在php代码中调用hutils扩展中的方法了。
[root@ef40a04d7af1 ~]# php -r "echo Hutils\Common::say();"
Hello World!
扩展开发完成后,也可以将hutils\ext打包发布,这样就可以脱离Zephir开发环境,使用一般扩展编译安装步骤使用。