Engine Yard Blog RSS Feed

PHPの関数やコード例の動作確認をどのように行っていますか?

最も基本的な方法は変数や関数の戻り値を逐次、echoで出力する方法でしょう。 しかしこの方法では何度もコード編集と実行を繰り返す必要があり非効率です。デバッガやIDEの使用も解決策の1つですが、大げさすぎたりパフォーマンスの問題がある時もあります。

一方でRubyの世界を見てみるとirbpryを使ってコンソール上でリアルタイムにコードを試す姿が一般的です。 今回はPHPで対話的なデバッグやコード実行を行えるPshSHを紹介します。

従来の手法

php -a

PHPには標準で対話シェルモードがPHP5.1以降から搭載されています。 しかしこの機能を利用するには--with-readline付きでPHPがコンパイルされている必要があります。 readlineが利用できない場合はインタラクティブシェルの変わりにインタラクティブモードが立上がりますが、ヒストリの補完ができないなど充分に機能が利用できません。

phpsh

phpshはPHPを対話的に利用するシェルです。 Facebookによって開発されましたが、現在はメンテナンスされていません。 その理由は動作にPythonが必要であるという点も関係しているでしょう。 PHPを使いたい人にとってPythonをセットアップするというのは普及が難しいものと思われます。

PsySHはインストールが簡単

その他のツールに比べるとPsySHはインストールが非常に簡単です。Composerかwgetをつかってインストールする事で即座に利用できるようになります。 readlineもあったほうが良いですが、一応の動作はするようになっています。

psyshを起動すると入力したPHPのコードを実行し、戻り値を随時表示します。

ComposerによるAutoloadなどを利用してフレームワークのクラスを読み込み、動作を試す事もできます。

シェル以外の機能も豊富

PsySHはコードを実行するだけではなく、さらに便利な機能も備えています。

  • doc コマンドによる指定した関数などのドキュメント表示
  • list コマンドによるコンテキスト内の変数や関数の一覧表示
  • show コマンドによる読み込み済みのソースコードの表示
  • wtf コマンドによる最後に発生した例外の情報表示

試す価値あり

関数の検証にtest.phpのようなコードを書いたり、可読性の低いワンライナーコードを書く必要はもうありません。 PsySHをひとまずインストールしておいて、Rubyistのようなデバッグ方法を少しづつ試してみると快適さが手に馴染んでくるのではと思います。

さらに詳しく知りたい方は作者のbobthecowさんがOSCONで発表した資料がありますのでこちらもどうぞ。


Tagged:

comments powered by Disqus