Console Componentを使った感想を記録しておきます。雑なメモですが、どなたかの参考になれば。
Console Componentとは
Console ComponentはPHPのコマンドラインアプリケーション用ライブラリです。コマンドラインオプション解析や、出力に簡単に色をつける機能などを提供しています。
ちなみに、このライブラリはSymfony Componentsに含まれています。SymfonyはPHPの有名フレームワークですが、多くの機能をスタンドアロンなライブラリとして切り出しています。Console Componentもその一つということになります。
コマンドラインオプション解析ライブラリとしての特徴
イマイチな点
- コマンドラインオプション解析だけしたい場合には巨大かつ冗長
- 必ずCommandクラスを継承したクラスを作らなくてはならない
- サブコマンド無しのコマンドが標準では作れない
- 単機能のツールを作る場合でも必ずサブコマンド指定をさせることになる
- --with-foo,--without-fooのようなオプション指定に標準で対応していない
- 他言語の同等ライブラリでは真偽値を返してくれるものがあって便利
- 値を取るオプションの場合に、型の指定ができない
- 他言語の同等ライブラリでは数値を取るオプションに文字列が来るとエラーにしてくれる、無きゃ無いでいいかも…
上記のうちいくつかは簡単に対応できそうな気もしていますが、「巨大かつ冗長」はどうにもならんと思います。
サンプルコード
以下、Commandクラスを継承したクラスの例です。これをApplicationクラスからadd()で登録して使います。