ConsoleBundleが便利だった

Symfony Advent Calendar 2016の5日目の記事です。
Symfony2を使っていると、Web上でコマンドを実行したくなることがあると思います。
自分でBundleを作ろうと思いましたが、検索したらBundleがありました。
やはり世の中には同じようなことを考えている方がいるんですね。
導入方法
使い方は非常に簡単です。
まずはComposerでConsoleBundleをインストールします。
$ composer require coresphere/console-bundle
次にAppKernel.phpに追記していきます。
流石に、本番環境で使うのは避けたほうがよいので、dev,testのみでBundleが読み込まれるように記述します。
// app/AppKernel.php
public function registerBundles()
{
$bundles = [
// other bundles here...
];
if (in_array($this->getEnvironment(), ['dev', 'test'])) {
// ...
$bundles[] = new CoreSphere\ConsoleBundle\CoreSphereConsoleBundle();
}
return $bundles;
}
そしてルーティングの設定をするために、 app/config/routing_dev.ymlを編集します。
# app/config/routing_dev.yml
# ...
_main:
resource: routing.yml
coresphere_console:
resource: .
type: extra
最後に assets:install webを実行します。
bin/console assets:install web
実際に動かしてみる
まずはSymfonyにhttpでアクセスしましょう。
今回はビルトインサーバを利用します。
$ bin/console server:start
$ open localhost:8000
右下の、Consoleアイコンをクリックします。
以下のようにコンソールページが表示されます。
サジェストも完備
下の入力ボックスに入力すると、サジェストされます。
こんな感じに、簡単に導入、実行することが出来ます。
ただし、対話式は無理です。httpはステートレスだから仕方ないですね。
どこで使えるのか?
僕がよく使うのはcache:clearやdebug:routerやdebug:containerなどで利用しています。
最後に
Symfonyには、欲しいと思う機能は結構Bundleとして公開されています。 ぜひぜひ探してみてはいかがでしょうか?
また、余裕があるのならばBundleがどのように実装されているかを覗いてみると新たな学びがあると思います。