Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7605043
  • 博文数量: 1769
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16352
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1769)

文章存档

2024年(15)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类:

2009-08-31 11:39:34

本文要讲的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,如

阅读(1425) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~