タイトルそのまんまなんですが、Borisというのがあるらしいです。RubyやPythonにはインタラクティブシェルというのがあって、ターミナルから文字通り「対話的に」コーディングを行えます。

一応、PHPにもこういうのはあって、 php -a とやるとインタラクティブシェルが起動するのですが、IPythonやIRBにあるような戻り値の自動表示がありません。いちいちecho しなければいけないので、大変ダルいんですね。

そこでBorisというのを使うと、戻り値がいい感じにわかります。

いいですね。Macならhomebrewで入れるのが楽です。
Borisをライブラリに同梱する
で、それはそれで「オシャレやね」という程度ですが、このBorisはライブラリを読み込んだ状況で始めることができます。
たとえば、僕はいまHamePubというePub生成用のPHPライブラリ(既存WebサイトのHTMLを突っ込んでePubを作れる)を作っている最中なのですが、いかんせんライブラリなので、それ自体では特になにも起きないんですね。外部から呼び出されることではじめて動作します。
したがって、このライブラリの開発では、ライブラリ自体のコーディングとは別に、ライブラリを使用する側のコードも書く必要があります。
一応、ユニットテストは導入済みなんですが、いちいちテストから書きたくないという思いもあるので、「諸々設定済みの状況で始められねーかなー」という場合があります。そんなとき、Borisを設定して用意しておけば楽ですね。
// composer.json
"require-dev": {
"phpunit/phpunit": "4.4.*",
"d11wtq/boris": "1.0.8"
}
たとえば、composer.jsonに書いておくと、composer install した段階でBorisのオートローダーが生成されます。
あとはこれをキックするphpをどっかに(プロジェクトルート/binとかですかね)においておけば、コードの記述とその操作が簡単にできます。今回はプロジェクトルートにおいてしまいましょう。
# プロジェクトルートで実行 vi hamepub chmod +x hamepub
hamepubファイルの中身はこんな感じです。
#!/usr/bin/env php
<?php
/**
* Command line utility
*
* @package Hametuha\HamePub
*/
// コマンドラインじゃなければ停止
if( 'cli' !== php_sapi_name() ){
die('This is command line tool.');
}
// Composerのオートローダーを読み込み
require_once __DIR__. '/vendor/autoload.php';
// Borisを初期化
$boris = new \Boris\Boris('hamepub> ');
$config = new \Boris\Config();
$config->apply($boris);
$options = new \Boris\CLIOptionsHandler();
$options->handle($boris);
// ローカル変数をセット
$boris->setLocal([
'epub_id' => 10,
'temp_dir' => __DIR__.DIRECTORY_SEPARATOR.'tests'.DIRECTORY_SEPARATOR.'tmp',
]);
// Start
$boris->start();
こうすると、プロジェクトルートで ./hamepub と実行すれば、設定済みのBorisが起動します。

変数も使用できます。かっこいいですね。あと、プロンプトの先頭が自分のライブラリ名になっているのもやる気がでます。
というわけで、Borisの紹介でした。ライブラリを配布する場合なんかに、これが付いていると導入が早いかもしれません。
価格¥4,860
順位1,575,848位
著渡辺 一宏, 吉羽 龍太郎, 岸田 健一郎, ほか
編集丸山 弘詩
発行インプレス
発売日2014 年 9 月 19 日
