PsySH——PHP交互式控制台

[导读] 今天在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官网

安装

官网介绍了3种安装方式:

  • 直接下载
  • Composer安装
  • 直接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\

文档下载地址:

下载中文文档:

$ 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或者?,它能帮助你了解一切的命令

在内置web server中调试

本来想用Laravel做示例,但debugging的内容经常过多要分页查看。 而且说好的中文文章,好吧,那就用ThinkPHP为例:

首先,安装一下ThinkPHP

然后,用Composer局部安装一下PsySH:

因为ThinkPHP的dump()函数和symfony/var-dumperdump()函数有重名冲突,所以需要把其中一个重命名。个人建议把TP的改掉。为啥?因为symfony的好用多了。。。

在入口文件index.php添加如下3句代码:

在项目根目录下,用PHP的内置web服务器启动: php -S localhost:8080

然后即可在浏览器访问你的应用: http://localhost:8080

你将会看到以下画面,PsySH启动了

其他操作,和CLI操作差不多。例如:ls ls -al \Think\Model

show \Think\Model::find

doc \Think\Model::save

当然,那句\Psy\Shell::debug()不一定要放在入口文件,它可以放在你一切想要debug的地方 例如,我放在默认的首页控制器:

重新运行php内置server并访问页面,然后输入命令: ls -al

打开PsySH后,输入get_defined_vars()试试?

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非著名程序员

Android的编译打包流程详解

阅读本文可以让获得如下知识:(1)Android编译打包流程。(2) Android是如何通过R文件引用到真正的资源文件?(3)打包流程中的的对齐是什么,为什么...

18110
来自专栏程序员互动联盟

【答疑解惑】如何安装eclipse

随着android应用开发的火热,eclipse使用的人也越来越多。好多初学者不知道如何安装eclipse,这里做一个简单回答。 首先我们要确认系统的版本,是3...

2454
来自专栏守望轩

Visual Studio 2008 每日提示(十九)

#181、按Ctrl+Shift+F12 在错误列表查看下一个错误记录 原文链接:You can use Ctrl+Shift+F12 to view the...

3305
来自专栏程序员的酒和故事

google/protobuf--VS2015编译、使用

本想用google的libphonenumber这个库来进行电话号相关功能,但是看到需要依赖protobuf,反正都是谷歌出品,那就顺便了解学习一下protob...

3856
来自专栏阮一峰的网络日志

Fish shell 入门教程

命令行是程序员的必备技能。图形界面虽然好看,解决问题还是要靠命令行。 命令行由 Shell 提供。各种命令通过 Shell,传递给操作系统的内核。学习命令行就是...

2508
来自专栏猿人谷

使用bash编写Linux shell脚本--调试和版本控制

当我还在布鲁克大学上学的时候, Macquarium 实验室中充满了苹果公司的 Macintosh Plus 电脑。一天,我在为第三年的操作系统课程准备一个程序...

29410
来自专栏Python

Centos crontab定时任务

CRONTAB是一个用于设置周期性被执行的任务的工具,有了它,我们就可以从定时工作中解放出来。

650
来自专栏java初学

scrapy(2)——scrapy爬取新浪微博(单机版)

42214
来自专栏信安之路

RPO 相对路径覆盖攻击

RPO (Relative Path Overwrite) 相对路径覆盖,最早由 Gareth Heyes 在其发表的文章中提出。主要是利用浏览器的一些特性和部...

450
来自专栏技术碎碎念

HTTPS握手

作用 内容加密 建立一个信息安全通道,来保证数据传输的安全; 身份认证 确认网站的真实性 数据完整性 防止内容被第三方冒充或者篡改 https的采用了对称加密和...

2527

扫描关注云+社区