本文要讲的php shell并非是使用php来写shell脚本,而是讲一个php的的交互式shell。所谓REPL,也就是read-eval-print-loop,也就是说,shell读入一个指令,计算,然后输出结果,常见的有Python、Ruby的IRB等。
对于PHP,我们常常会写一个test.php,然后放入一些自己的代码,再打开浏览器检验一下,如果不对,又要重新修改代码,非常麻烦。交互式shell的好处就可以体现出来了,输入指令之后可以立刻看到执行代码的结果,所以非常适合用来检验代码片段(snippets)的正确性以及进行一些试验。
PHP本身自带一个交互式的shell,在命令行中输入php -i,便可以交互式运行,但要先输入一个php脚本的起始标签,但是该shell遇到异常的时候会直接退出,非常不方便。那么我找到一个非常接近于REPL的交互式shell便是
1. 安装
php-shell要求php 5.0以上版本
下载
运行pear install PHP_Shell-0.3.1.tgz
如果确保pear已经安装,并在你的PATH路径中
2. 使用方法
在命令行下输入php-shell(Linux为php-shell.sh)进入交互式命令行:
PHP-Shell - Version 0.3.1, with readline() support
(c) 2006, Jan Kneschke
>> use '?' to open the inline help
>>
这时候我们可以输入我们所需的表达式了,在php-shell中直接输入变量名,它也可以将内容直接打印出来:
>> $a = new ArrayObject( )
ArrayObject::__set_state(array(
))
>> $a->
__construct(
append(
count(
exchangeArray(
getArrayCopy(
getFlags(
getIterator(
getIteratorClass(
offsetExists(
offsetGet(
offsetSet(
offsetUnset(
setFlags(
setIteratorClass(
>> $a->append( 'a' )
>> $a->count( )
1
>> $a->offsetGet( 0 )
'a'
当出现异常时,php-shell也会打印出异常的内容。
你可以使用exit退出。
3. Tab补全
php-shell一个强大的功能是支持补全,以下内容可以被补全:
- new 类名()
- 类名::方法名()
- 类名::常量名
- $变量名
- 函数名()
- $object->方法名()
请先输入第一个字符然后按TAB按钮。如果只有一种匹配,它便会直接补全名称,否则,再按一次TAB会列出所有的可能性。
如果你想查看所有已声明的类,你可以使用 getdeclaredclasses():
>> get_
>> get_
get_browser(
...
get_declared_classes(
...
get_resource_type(
>> get_dec
>> get_declared_
get_declared_classes(
get_declared_interfaces(
get_defined_constants(
get_defined_functions(
get_defined_vars(
>> get_declared_classes( )
4. 总结
如果是php新手,希望php-shell能帮你快速掌握php。老手也可以用其来检验代码段。
除此之外,也可以尝试一下基于Web页面的php shell,如