Edited at

laravel5でrails consoleのようなREPLを利用できるようにする

More than 1 year has passed since last update.

下記コマンドで本記事の内容と同じものが実現できる。

(自分の昔の記事で記載していたことに今日気付いた…。)

% php artisan tinker


目的

laravel開発中に、rails consoleのように、プロジェクトの設定が反映されたREPLで簡単な動作確認をしたくなった。

公式サイトにもググってもそれっぽい記述が見付からなかった。

ちなみに、laravelプロジェクトの直下で% psyshとしてREPLを立ち上げてもlaravelプロジェクトの設定は反映されない。

これらの設定も反映されたREPLを立ち上げたい。


実現方法

psyshを実行するartisanコマンドを作成して対応した。


app/Console/Commands/PsyshConsole.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class PsyshConsole extends Command
{
protected $signature = 'psysh-console';
protected $description = 'Run console by psysh';

public function __construct()
{
parent::__construct();
}

public function handle()
{
eval(\Psy\sh());
}
}



app/Console/Kernel.php

    protected $commands = [

<省略>
Commands\PsyshConsole::class,
<省略>
];


実行方法

% php artisan psysh-console

これで、psysh上で色々と動作確認できる。


感想

本当にこんな解決方法しかないのか?

複数人で開発してるプロジェクトだと、commandを追加するのが許されないケースもありそうだし、ローカルでいちいち自分で追加するのも微妙だな。

デフォルトで提供されてるんじゃないかと思うし、そうではなくとも簡単に実現できる方法があるはずだけど、それを発見するまではこの方法で凌ぐことにする。

冒頭でも書いたが、下記コマンドで実現可能。

やっぱり用意されてるわな。

% php artisan tinker