6.2. HTTP 経由の実行

HTTP ランナーは、その場ですぐ実行できるというものではありません。 ウェブブラウザ経由で呼び出したい PHP ファイルについて、 ちょっとした仕込みを行う必要があります。 とはいえそれは本当にシンプルな作業なので、 HTTP 経由での実行もコマンドラインからの実行と同列に扱って説明することにしました。

HTTP 経由で実行するためのファイル AllSPecs.php の例を以下に示します。

<?php

require_once 'PHPSpec.php';

$options = new stdClass;
$options->recursive = true;
$options->specdocs = true;
$options->reporter = 'html';

PHPSpec_Runner::run($options);

PHPSpec_Runner クラスは、 実際にはデフォルトのコンソールランナーで内部的に使用されているものです。 つまりここで行っているのは非常に単純なことです。 この例で実際にやっていることは、 コンソールランナーが内部で行っている作業を PHP ファイルに書き出しているだけで、 ウェブブラウザから呼び出されたときにもこれを実行できるようにしています。

まず、ベースとなるファイル PHPSpec.php をインクルードします。 PHPSpec は PHP5 の autoload 機能を使用しているので、 PHPSpec のその他のファイルをインクルードする必要はありません。 次に、必要なオプションを stdClass (PHP5 の標準クラス) のプロパティとして設定します。 オプションとして、ふつうの配列を使用することもできます。 配列で指定しても、内部で自動的にオブジェクトに変換します。

ここで指定しているオプションは、すべてのスペックを実行するためのごく一般的なものです。 PHPSpec はカレントディレクトリ以下を再帰的に検索し、 みつかったスペックのすべてのサンプルを実行します。 出力結果には specdoc 形式のプレーンテキストが追加され、 実行結果は HTML 形式で出力されます。

最後に、PHPSpec_Runner の static メソッド run() を実行します。 これで完了! 特定のサブディレクトリのスペックだけを実行したいのなら、 このファイルをそのサブディレクトリにコピーすればいいでしょう (再帰検索のオプションは、親ディレクトリは対象外となります)。