Drush REPL, or Drupal, Drush, PsySH for easier development
Compared to languages such as Ruby or Python, PHP lacks a good REPL. REPL stands for read-eval-print loop, and no,
php -a doesn't count. A good REPL will, for one, Print the result of each operation, which the standard CLI SAPI doesn't do (and it had trouble with the Eval part until recently). What the php -a client is, however, is an interactive scripting environement. You can type code, statements, as if you were within a php script, and they'll be evaluate the same way.
Enter boris. It is a quick, simple, tiny, powerful REPL for php, that will not die. The way boris works is to fork itself and run your code in a separate process. This way, the main REPL is not affected by the code you type into it, and crashes in the code-running process doesn't affect the main process. For a while, boris sufficed for my needs, but I kept expecting more out of my REPL.
- PsySH knows about the documentation of the code (from the manual for userland core php and docblocks for typed php), and makes it available through a
doccommand (we recommend installing the manual locally);
- It does reflection for all code through the
- It allows you to see the source of the code through the
- It keeps a history of your input, available through the
- It lets you start a shell anywhere in your code with the handy
Installing PsySH is rather straight-forward. First, make sure that you have composer available globally (locally can work in a pinch, but global is preferred) and run
composer g require psy/psysh:@stable. If you've setup your
$PATH to include your
COMPOSER_PATH, you'll have the
psysh command available anywhere!
What about Drupal?
OpenConcept is a Drupal shop, so it doesn't help us if awesome tools don't work with it. Luckily for us, Giuseppe Rota wrote a drush plugin that integrates PsySH into drupal (if you don't use drush, find it, learn it, love it). Just follow the instructions to install the plugin (unfortunately there is not d.o project yet) and once you're done, you can run
drush repl from any site to start PsySH within a bootstraped drupal environment.
Edit (2015/05/11): Giuseppe has applied to get his drush plugin promoted to a full drupal project, so hopefully, installation will soon be a simple
drush dl away!