Laravel 5 命令和处理程序问题

Laravel 5 Command and Handler issue

我正在与 laravel 5 合作我的项目之一。在实施过程中,我遇到了一个与命令和处理程序相关的问题。

我使用 artisan 命令生成命令

php artisan make:command TestCommand --handler

我在 app/commands 文件夹 "TestCommand.php"

生成了命令
<?php

namespace App\Commands;

use App\Commands\Command;

class TestCommand extends Command
{
public $id;
public $name;

public function __construct($id, $name)
{
    $this->id = $id;
    $this->name = $name;
}
}

我的TestCommandHandler.php也是这样

<?php

namespace App\Handlers\Commands;

use App\Commands\TestCommand;
use Illuminate\Queue\InteractsWithQueue;

class TestCommandHandler
{
/**
 * Create the command handler.
 *
 * @return void
 */
public function __construct()
{
    //
}

/**
 * Handle the command.
 *
 * @param  TestCommand  $command
 * @return void
 */
public function handle(TestCommand $command)
{
    dd($command);
}
}

每当从控制器发出此命令时,它都会显示以下问题

InvalidArgumentException in Dispatcher.php line 335:
No handler registered for command [App\Commands\TestCommand]

拜托,任何人都可以帮助我解决这个问题。谢谢

默认情况下 Laravel 5.1.x 不包含 BusServiceProvider。所以我们应该在 provider 文件夹下创建 BusServiceProvider.php 并将其包含在 config/app.php.

BusServiceProvider.php

<?php namespace App\Providers;

use Illuminate\Bus\Dispatcher;
use Illuminate\Support\ServiceProvider;

class BusServiceProvider extends ServiceProvider {

/**
 * Bootstrap any application services.
 *
 * @param  \Illuminate\Bus\Dispatcher  $dispatcher
 * @return void
 */
public function boot(Dispatcher $dispatcher)
{
    $dispatcher->mapUsing(function($command)
    {
        return Dispatcher::simpleMapping(
            $command, 'App\Commands', 'App\Handlers\Commands'
        );
    });
}

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    //
}

}

config/app.php

'providers' => [
    App\Providers\BusServiceProvider::class
]

所以它可能会对其他人有所帮助。谢谢