在zephir
的初步编写尝试后,大家就会发现,其实很多事情都和想象的不一样。在php
中,很顺理成章的语句,在zephir
里面都是不能顺利解析的。所以,你可能需要一个php
代码,自动转换成zephir
代码的工具。苏南大叔在本文中,推荐一款自动代码转换的神器,叫做php-to-zephir
。有了这款代码转换神器后,编写zephir
的过程就会简单很多了。
本文测试环境为:
mac10.14.1 (18B75)
,php7.2
,zephir0.11.8
,Zephir-Parser1.2.0
,php-to-zephir0.2.1
。
神器php-to-zephir
简介
苏南大叔推荐的这款自动转化神器php-to-zephir
,git
主页地址是:
- https://github.com/fezfez/php-to-zephir
截至到发稿,这款神器的最新版本是0.2.1
,已经三年左右没有更新了。
需要明确的是:
-
并不是所有的
php
都能转化,符合套路的才能转换。 - 转换的结果,也不一定是肯定能用的,还是必须去调试代码的。
所以,这个php-to-zephir
工具仅仅是个辅助工具,这点是必须明确的。所以,对转化的结果和过程,请不要报任何不切实际的幻想。如果直接转完就能使用的话,就没有必要用程序猿人工了。哈哈。
安装php-to-zephir
安装过程并不是从git
上拉取代码,再build
。而是通过composer
进行安装操作。
第一步:需要先初始化一个composer
项目。
composer init
第二步:修改为国内composer
源(可选)
如果您的网络环境良好的话,就不用这一步了。
- https://newsn.net/say/composer-howto.html
{
//已有的json内容
"config": {
"secure-http": false,
"preferred-install": "dist",
"sort-packages": true
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
第三步:安装php-to-zephir
composer require fezfez/php-to-zephir
查看php-to-zephir
版本号
可以通过下面的命令,查看本地composer
安装的php-to-zephir
版本:
composer info | grep php-to-zephir
返回值类似如下:
fezfez/php-to-zephir 0.2.1 Transform php code to zephir
php
代码转换准备
要转换的代码,需要先事先放置在一个文件夹内,并且,所有的php
代码都必须放在一个namespace
和class
名下,也就是说,并不是任何代码都可以转化的。必须符合格式才可以做转换。下面就是套路格式:
namespace test;
class test {
function xxx(){
//无法转的代码放在一个class的function里面
}
}
把要转化的代码,放在项目根目录下面的myDirToConvert
文件夹(名字随意,记住即可)。
代码转化
下面的代码就是重点了,命令似乎有些长,注意替换里面的myDirToConvert
字样,替换为你的php
代码所在的目录。
vendor/bin/php-to-zephir phpToZephir:convert myDirToConvert
注意myDirToConvert
就是要转化的php
代码的存放目录,注意做相关替换。
不出意外的话,就可以在项目根目录下面的converted
文件夹中看到转化的结果了,把转好的代码复制到zephir
项目中,就可以进行进一步调试了。