概念
Zephir 是一种中间语言,以接近 PHP 的语法来编写代码,然后转换成 PHP 扩展。
准备
在开始之前,需要下载并安装好以下几样东西:
安装Visual Studio 2017
后续很多命令需要在VS 2017的开发人员命令提示符
中执行。
关于Visual Studio版本的说明:
编译PHP 7.0+扩展 => Visual Studio 2015
编译PHP 7.2+扩展 => Visual Studio 2017
编译PHP 8.0+扩展 => Visual Studio 2019
我下载的是VS2017社区版,也就是免费版,下载地址:
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
安装vs2017注意事项
安装时勾选使用C++的桌面开发
安装PHP7.4
下载PHP7.4,TS版或NTS版均可。至于下载的是哪个版本,意味着后面生成的插件也只能在该版本中使用。
下载地址:http://windows.php.net/download/
本文下载的是PHP7.4 VC15 x64 Thread Safe:
下载后解压至D:\php\dist
目录下,解压后如图:
设置环境变量
设置php.ini
将D:\php\dist\php-7.4.14-Win32-vc15-x64\php.ini-development
复制一份,重命名为php.ini
,然后打开php.ini,去掉;extension_dir = "ext"
前面的分号,同时去掉以下两行的分号:
extension=fileinfo
extension=mbstring
安装PHP SDK
下载地址:https://github.com/Microsoft/php-sdk-binary-tools/releases
本文下载的是2.2.0版本:
下载后解压至D:\php\sdk
目录下,解压后如图:
设置环境变量
新建一个名为PHP_SDK
的环境变量,值为:D:\php\sdk
安装PHP Developer Pack
这里注意要跟前面的php版本一致。
下载地址:https://windows.php.net/downloads/releases/
本文下载的是php-devel-pack-7.4.14-Win32-vc15-x64.zip
下载后解压至D:\php\devel-pack
目录下,解压后如图:
设置环境变量
新建一个名为PHP_DEVPACK
的环境变量,值为:D:\php\devel-pack
安装Zephir
在D:\php目录下新建zephir文件夹,用于安装Zephir
cd D:\php\zephir
composer require phalcon/zephir:dev-master
设置环境变量
在Path中添加一个环境变量,值为:D:\php\zephir\vendor\bin
打开cmd,输入:zephir
,显示如下界面则说明Zephir安装成功:
安装Zephir Parser扩展
注意下载的版本需要与前面的php版本一致。
下载地址:https://github.com/phalcon/php-zephir-parser/releases/latest
本文下载的是:zephir_parser_X64_vc15_php7.4_1.3.6-559.zip
下载并解压,将php_zephir_parser.dll
文件拷贝至php的扩展目录:D:\php\dist\php-7.4.14-Win32-vc15-x64\ext
然后修改D:\php\dist\php-7.4.14-Win32-vc15-x64\php.ini
文件,在文件末尾加入:
extension=zephir_parser
然后打开cmd,输入php -m
,显示Zephir Parser则说明扩展安装成功。
创建第一个Zephir扩展
生成扩展骨架
在d:\php目录下创建extension文件夹,用于存放即将要生成的扩展代码。
用管理员身份运行VS 2017的开发人员命令提示符
进入刚创建的扩展目录:d:\php\extension
cd d:\php\extension
通过zephir init
命令生成扩展骨架:
zephir init hello
进入D:\php\extension\hello\hello
文件夹,编写common.zep
,内容如下:
namespace Hello;
class Common
{
public static function say()
{
echo "hello,zephir!";
}
}
语法跟php几乎一样,唯一不同是没有开始的<?php
标记。
编译扩展
回到VS 2017的开发人员命令提示符
,进入php-sdk文件夹,执行phpsdk-vc15-x64.bat
cd D:\php\sdk
phpsdk-vc15-x64.bat
执行后,可以看到命令行交互界面前面多了一个$
符号:
进入扩展目录,编译扩展:
cd D:\php\extension\hello
zephir compile
cd ext
configure
nmake
执行完以上命令后,在D:\php\extension\hello\ext\x64\Release_TS
目录就可以看到生成好的php_hello.dll
文件。
测试扩展
将生成的php_hello.dll文件拷贝至D:\php\dist\php-7.4.14-Win32-vc15-x64\ext
目录,然后修改D:\php\dist\php-7.4.14-Win32-vc15-x64\php.ini
文件,在末尾添加extension=hello
然后打开cmd,输入php -m
,显示hello则说明扩展已安装成功。
接着输入:php -r "echo Hello\Common::say();"
,结果显示hello,zephir!
。