phpsh is a read-eval-print-loop for php that features readline history, tab completion, and quick access to documentation. It was developed at Facebook and ironically, is written mostly in python. It is open source and released under a modified BSD license.
Summary: incorporating it more is possible in some cases. but it's hard without a php parser.. we might try to do this more later. Reviewed By: marcel Test Plan: php> $a->la() php> la() php> $a=new A() Revert Plan: ok
|test||typo in last commit breaks extra includes; fix test/|
|LICENSE||Initial commit for new public phpsh repo.|
|README||note in README that currently phpsh requires python 2.4 or higher|
|setup.py||created google groups mailing list|
Mailing list at: http://groups.google.com/group/phpsh To install: (Note that the install currently clobbers any previous /etc/phpsh/rc.php) ~ python setup.py build ~ sudo python setup.py install (Will download and install the pysqlite dependency for you if needed.) The buildscript uses setuptools. This comes with python >= 2.5. If you are using python 2.4, go grab EasyInstall: http://peak.telecommunity.com/DevCenter/EasyInstall#installing-easy-install Currently, python 2.3 and earlier is not supported. Let us know if your setup requires that and we might try to support a lower common denomenator.. To set up after install: - If you just want to use vanilla php, just do ~ phpsh and have fun. - To connect to an actual codebase, e.g.: ~ cd ~/www ~ ctags -R # for phpsh ctags integration, recommended ~ phpsh lib/init.php # or some file(s) that load codebase libraries - To get autoloading, modify /etc/phpsh/rc.php. After that it's just: ~ cd ~/www ~ phpsh And for times when you just want vanilla php: ~ phpsh -c none - For individual configuration, also see rc.example.php in the php distribution. Note to ppl hacking on phpsh: - For faster iteration, after installing once, you can run phpsh from src/ directly without reinstalling. E.g.: ~ cd ~/www ~ ~/projects/phpsh/src/phpsh Todo for after phpsh 1.2 - (A) Simple phpsh breakpoints that you can insert into your php code. - (B) magic fatal undoing? - Convert from /tmp file to named pipe for 'ready' message passing http://my.opera.com/zomg/blog/2007/08/29/php-and-named-pipes - Maybe phpsh_check_syntax shouldn't actually be installed as a script, and just be a pkg_resource? Didn't want to worry about zip file overhead, and installing didn't seem like a big deal. - Similarly, php_manual.db should probably go in share/ not etc/ but similarly was worried about b.s. with setuptools.. - Paging for long php> d .. results? Or is terminal scroll fine.. - Thread loading ctags and starting php? Would speed start but not restart. - Command-line apc for faster php startup for large codebases. - Note on php start error to start from codebase place? - Make tab to show function signature work with multiline func sigs. About (A: breakpoints): jlindamood has suggested adding a very basic debugging facility in which phpsh.php would define some function called like phpsh_breakpoint() which you would be able to put in your code that would cause the php> to re-happen at that breakpoint so that you can investigate whatever state until you issue like a phpsh_resume() (or whatever it would be called). My suspicion is that that can be done pretty easily be having a new message type from phpsh.php to phpsh.py. (Currently there is only the 'ready' message when phpsh.php is ready to receive a new line of codes from phpsh.py.) About (B: fatal-undoing): brent suggested adding some kind of katamari-esque memory snapshotting, so that on fatals like calling a nonexistent function (which are not catchable in php-land, sadly) can be magically recovered from. I think dweatherford or larry would be good to ask about this kind of black magic.