Laravel PHP Artisan调用所有自定义命令

时间:2018-10-23 11:49:48

标签: laravel command

我仍在使用Laravel 5.3。 (我即将升级,但直到那时仍会使用此版本)。我已经创建了几个命令,并将它们注册在我的kernal.php文件中。这是一个示例:

class Kernel extends ConsoleKernel
{
    protected $commands = [
        // one off commands
        Commands\Sproj\Command1::class,
        Commands\Sproj\Command2::class,
        Commands\Sproj\Command3::class,
        Commands\Sproj\Command4::class,

        // scheduled commands
        Commands\ScheduledCommand1::class,
        Commands\ScheduledCommand2::class,
        Commands\ScheduledCommand3::class,
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('ScheduledCommand1')->dailyAt('14:00');
        $schedule->command('ScheduledCommand2')->dailyAt('15:00');
        $schedule->command('ScheduledCommand3')->dailyAt('16:00');
    }

    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

其中一个命令的示例如下:

class Command1 extends Command
{
    protected $signature = 'sproj:command1';
    protected $description = 'Command Example';

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

    public function handle()
    {
        echo 'Do something here';
    }
}

我想执行“一次性”命令之一,因此我正在使用类似php artisan sproj:command1

这确实有效,但是它也正在执行我创建的所有其他命令。即使我运行诸如php artisan cache:clear之类的内置命令,我所有的自定义命令仍在运行

我做错什么了吗?

1 个答案:

答案 0 :(得分:0)

有同样的问题。我的问题是我使用__construct()方法而不是handle()方法进行调用。