psysh psysh is a runtime developer console, interactive debugger and repl for php.
psysh是一个php的运行时开发平台,交互式调试器和read-eval-print loop (repl)。
说的简单点,就像你用firebug的console调试你的javascript代码一样。
psysh官网 github packagist 安装 官网介绍了3种安装方式:
直接下载 composer安装 直接clonegithub仓库的代码 我比较建议选择composer安装,因为这个项目还有其他的依赖项目,用composer很好解决这个问题。
以下教程以os x和windows 10为例,假定已经安装php和composer并已经将它们设置为系统环境变量:
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{用户名}appdataroamingcomposervendorpsypsysh
因为bin/psysh文件并不是windows的可执行文件,所以需要使用以下命令运行psysh
php c:users{用户名}appdataroamingcomposervendorpsypsyshbinpsysh
为了使用方便,在c:users{用户名}appdataroamingcomposervendorpsypsyshbin目录下新建一个名为psysh.bat的文件,其内容如下:
@echo offphp %~dp0psysh %*
此时,把c:users{用户名}appdataroamingcomposervendorpsypsyshbin加入到系统的环境变量path,以后可以直接在cmd下运行psysh了:
c:usersvergil>psyshpsy shell v0.6.1 (php 5.6.8 — cli) by justin hileman>>>
特性 上面说过,psysh是一个交互式的php运行控制台,在这里,你可以写php代码运行,并且可以清楚看到每次的返回值:
并且,它很智能地知道你的代码是否已经结束
自动完成 psysh可以像控制台那样,按下两次键自动补全,帮你自动完成变量名,函数,类,方法,属性,甚至是文件:
文档 在运行时忘记参数怎么办?psysh的文档功能可以让你即时查看文档。
psysh的文档存放在~/.local/share/psysh/。(windows系统存放在c:users{用户名}appdataroamingpsysh)
文档下载地址:
english brazilian portuguese chinese (simplified) french german italian japanese polish romanian russian persian spanish turkish 下载中文文档:
$ cd ~/.local/share $ mkdir psysh$ cd psydh$ wget http://psysh.org/manual/zh/php_manual.sqlite
ok,完成后重新打开psysh
而且还自带分页功能(和more命令一样)
当然,自定义的对象也可以有相关功能:
比如,test.php这个文件有如下内容:
查看源代码 轻松展现任何用户级的对象,类,接口,特质,常数,方法或属性的源代码:
接着上一个例子:
查看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-dumper的dump()函数有重名冲突,所以需要把其中一个重命名。个人建议把tp的改掉。为啥?因为symfony的好用多了。。。
在入口文件index.php添加如下3句代码:
在项目根目录下,用php的内置web服务器启动:
php -s localhost:8080
然后即可在浏览器访问你的应用: http://localhost:8080
你将会看到以下画面,psysh启动了
其他操作,和cli操作差不多。例如:
ls -al thinkmodel
show \think\model::find
doc \think\model::save
当然,那句psyshell::debug()不一定要放在入口文件,它可以放在你一切想要debug的地方例如,我放在默认的首页控制器:
重新运行php内置server并访问页面,然后输入命令:
ls -al
打开psysh后,输入get_defined_vars()试试?