PsySH——PHP交互式控制台

来源:http://vergil.cn/archives/psysh | 时间:2016-02-16 10:58:04 | 阅读数:
[导读] 今天在Github上发现了一个挺有意思的PHP项目:PsySH。 百度了一番,发现没有任何关于它的中文文章,经过研究,决定写本篇博文来讲述一下。 如果对你有所帮助,请留下你的回复

PsySH is a runtime developer console, interactive debugger and REPL for PHP.

PsySH是一个PHP的运行时开发平台,交互式调试器和Read-Eval-Print Loop (REPL)。 说的简单点,就像你用firebug的console调试你的JavaScript代码一样。

PsySH官网

  1. GitHub
     
  2. Packagist

安装


官网介绍了3种安装方式:
  1. 直接下载
  2. Composer安装
  3. 直接cloneGitHub仓库的代码
我比较建议选择Composer安装,因为这个项目还有其他的依赖项目,用Composer很好解决这个问题。 以下教程以OS X和Windows 10为例,假定已经安装phpComposer并已经将它们设置为系统环境变量:

 

OS X


先用Composer下载PsySH,这里用的是全局安装:

$ composer global require psy/psysh
 
安装完毕后,PsySH已经安装到/Users/{用户名}/.composer/vendor/psy/psysh目录下 此时,你可以直接运行:

$ /Users/{用户名}/.composer/vendor/psy/psysh/bin/psysh

为了使用方便,建议将它加入到环境变量:

$ echo 'export PATH="/Users/{用户名}/.composer/vendor/psy/psysh/bin:$PATH"' >>~/.bashrc
$ source ~/.bashrc

 

Windows


同样地,使用Composer安装,按win键+R键,输入cmd,打开windows控制台,然后:
 
composer global require psy/psysh

 
安装完成后,PsySH被安装到C:\Users\{用户名}\AppData\Roaming\Composer\vendor\psy\psysh 因为bin/psysh文件并不是windows的可执行文件,所以需要使用以下命令运行PsySH


php C:\Users\{用户名}\AppData\Roaming\Composer\vendor\psy\psysh\bin\psysh


为了使用方便,在C:\Users\{用户名}\AppData\Roaming\Composer\vendor\psy\psysh\bin目录下新建一个名为psysh.bat的文件,其内容如下:

@ECHO OFF
php "%~dp0psysh" %*


此时,把C:\Users\{用户名}\AppData\Roaming\Composer\vendor\psy\psysh\bin加入到系统的环境变量PATH,以后可以直接在cmd下运行psysh了:

C:\Users\Vergil>psysh
Psy Shell v0.6.1 (PHP 5.6.8 — cli) by Justin Hileman
>>>

 

特性


上面说过,PsySH是一个交互式的PHP运行控制台,在这里,你可以写php代码运行,并且可以清楚看到每次的返回值:
\ 并且,它很智能地知道你的代码是否已经结束 \

自动完成


PsySH可以像控制台那样,按下两次[tab]键自动补全,帮你自动完成变量名,函数,类,方法,属性,甚至是文件: \ \ \

 

文档

在运行时忘记参数怎么办?PsySH的文档功能可以让你即时查看文档。 PsySH的文档存放在~/.local/share/psysh/。(windows系统存放在C:\Users\{用户名}\AppData\Roaming\PsySH\ 文档下载地址:
  1. English
  2. Brazilian Portuguese
  3. Chinese (Simplified)
  4. French
  5. German
  6. Italian
  7. Japanese
  8. Polish
  9. Romanian
  10. Russian
  11. Persian
  12. Spanish
  13. Turkish
下载中文文档: $ cd ~/.local/share
$ mkdir psysh
$ cd psydh
$ wget http://psysh.org/manual/zh/php_manual.sqlite

 
OK,完成后重新打开PsySH \ \ 而且还自带分页功能(和more命令一样) 当然,自定义的对象也可以有相关功能: 比如,test.php这个文件有如下内容:
 
运行PsySH: \

查看源代码

轻松展现任何用户级的对象,类,接口,特质,常数,方法或属性的源代码: 接着上一个例子: \ \ 查看show的帮助,使用help show命令: \

反射列表


list命令知道所有关于你的代码 - 和其他人的。轻松地列出并搜索所有的变量,常量,类,接口,特点,功能,方法和属性。 \ \ 更多用法,可以输入help list命令查看。

获取最后的异常信息


如果忘记catch异常,可以使用wtf命令(wtf是what the fuck的意思么?)查看异常的信息: \

历史记录


可以像类Unix系统的history命令一样,在PsySH可以查看你运行过的PHP代码或命令。详情运行help history命令查看。

退出


使用exit命令退出你的PsySH

help

最好用的命令,help或者?,它能帮助你了解一切的命令 28.png

在内置web server中调试


本来想用Laravel做示例,但debugging的内容经常过多要分页查看。
而且说好的中文文章,好吧,那就用ThinkPHP为例:
首先,安装一下ThinkPHP 16.png 然后,用Composer局部安装一下PsySH: 17.png 因为ThinkPHP的dump()函数和symfony/var-dumperdump()函数有重名冲突,所以需要把其中一个重命名。个人建议把TP的改掉。为啥?因为symfony的好用多了。。。 19.png
在入口文件index.php添加如下3句代码:
 
20.png 在项目根目录下,用PHP的内置web服务器启动:

php -S localhost:8080
 
然后即可在浏览器访问你的应用: http://localhost:8080 你将会看到以下画面,PsySH启动了 21.png 其他操作,和CLI操作差不多。例如:ls

ls -al \Think\Model


22.png

show \Think\Model::find
 
23.png

doc \Think\Model::save
 
24.png 当然,那句\Psy\Shell::debug()不一定要放在入口文件,它可以放在你一切想要debug的地方 例如,我放在默认的首页控制器: 25.png 重新运行php内置server并访问页面,然后输入命令:

ls -al
 
26.png 打开PsySH后,输入get_defined_vars()试试? 27.png

手机扫描下方二维码,关注php100官方微信。

同步官网每日更新,为您带来随时随地的资讯与技术信息。
更有不定期的互动抽奖活动,赢取实用贴心的小礼物。
除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接
原文地址:

延伸阅读 More

粤ICP备15117877号-3
99uu优优