REPL for thinkphp

REPL是什么?
http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop

简单来说,REPL是一个shell版本的交互运行模式。输入代码即可直接运行,并查看运行结果。与web运行相比,不需要web环境,不需要将代码写到php文件中,再去访问。在测试代码、线上调试、线上运行数据统计方面,可以说是非常方便。

目前来看,几乎所有语言都有自己的shell版本,不管是脚本语言还是需要编译的语言(http://www.4wei.cn/archives/1002052),PHP也有自己的Cli模式。

PHP's command-line interface has an interactive mode, which you can run by doing php -a (assuming php is your PHP-CLI executable, not PHP-CGI). There is also phpsh and wigwam, which have tab completion and other features, and boris, which claims to be more robust than PHP's native interactive mode.

我觉得ruby on rails的shell是最为强大的。在开发和线上调试时,获取数据、获取日志非常方便。当然,从今天起,thinkphp也有了。
一句话理解 REPL for thinkphp,便是通过php cli模式,加载thinkphp中定义的常量、模型、控制器,可以直接在命令行中直接获取运行命令后的结果。
比如,要获取最新注册的一个用户,按常规的办法,肯定是添加一个控制器,添加一个方法,调用M("User")->find(),并把代码写到文件中,上传到服务器,然后访问这个方法的url。

而repl模式,则只需要在shell敲入M("User")->find(); 就可以看到结果了。

REPL for thinkphp的安装说明:

A. 支持平台(Windows不支持):
Linux Centos 5.5
Ubuntu 13.04
Linux Deepin 12.12.1
Mac OS X 10.7.5

B. 依赖条件
1. PHP 5.3.0 +
2. Readline moudle(php5-readline)
3. pcntl_signal(PHP for OS X http://php-osx.liip.ch/)

C. ThinkPHP版本要求
1. 3.1、3.2核心:https://github.com/liu21st/thinkphp
2. 最新版Extend扩展包:https://github.com/liu21st/extend

D. 使用方法:
1. 按正常流程开发Thinkphp项目,并将Extend扩展包下载到ThinkPHP/Extend目录下
2. 复制入口文件index.php为cli.php,并在cli.php添加两行配置define('MODE_NAME', 'cli');define('MODE_REPL', true);
3. 使用命令行访问cli.php,如 /usr/bin/php /www/cli.php
4. shell中可以使用php的语法,运算方法,Thinkphp的A、D、M、U等所有语法和常量,并能直接输出运行结果
5. Ctrp+C或者输入 exit 即可退出shell

部份截图:

发表评论