2017-02-09 25 views
0

Я пытаюсь научить себя команде Laravel, чтобы позже я использовал ее для планирования. Это мой файл ядра:Вызов команды laravel artisan с консоли

namespace App\Console; 

    use Illuminate\Console\Scheduling\Schedule; 
    use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 

    class Kernel extends ConsoleKernel 
    { 
     /** 
     * The Artisan commands provided by your application. 
     * 
     * @var array 
     */ 
     protected $commands = [ 
      // 
      'App\Console\Commands\FooCommand',  
     ]; 

     /** 
     * Define the application's command schedule. 
     * 
     * @param \Illuminate\Console\Scheduling\Schedule $schedule 
     * @return void 
     */ 
     protected function schedule(Schedule $schedule) 
     { 
      // $schedule->command('inspire') 
      //   ->hourly(); 
      $schedule->command('App\Console\Commands\FooCommand')->hourly(); 
     } 

     /** 
     * Register the Closure based commands for the application. 
     * 
     * @return void 
     */ 
     protected function commands() 
     { 
      require base_path('routes/console.php'); 
     } 
    } 

И это командный файл в \ App \ Console \ Команды

namespace App\Console\Commands; 

use Illuminate\Console\Command; 

class FooCommand extends Command 
{ 
    /** 
    * The name and signature of the console command. 
    * 
    * @var string 
    */ 
    protected $signature = 'command:name'; 

    /** 
    * The console command description. 
    * 
    * @var string 
    */ 
    protected $description = 'Command description'; 

    /** 
    * Create a new command instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    /** 
    * Execute the console command. 
    * 
    * @return mixed 
    */ 
    public function handle() 
    { 
     // 
    } 

    public function fire() 
    { 

     $this->info('Test has fired.'); 
    } 
} 

Я хочу, чтобы проверить команду FooCommand. Как он вызывает эту команду из оболочки, чтобы результат «Test был запущен»?

ответ

2

для запуска ваших команд вручную: php artisan command:name.

Удалите функцию fire, вы можете обработать ее внутри функции handle.

Исправьте функции расписания на ядра класса

class Kernel extends ConsoleKernel 
{ 
    .... 

    protected function schedule(Schedule $schedule) 
    { 
     $schedule->command('command:name') 
      ->hourly(); 
    } 
} 

Для конфигурации вашего расписания, пожалуйста, прочитайте это: https://laravel.com/docs/5.4/scheduling

+0

Спасибо за ответ. Что делать, если я добавлю еще один командный файл, например «SecondCommand»? Как мне это назвать? – user7432810

+0

команда 'schedule: run', будет выполнять все команды, зарегистрированные в функции' schedule'. Просто добавьте новую команду, например команду '$ schedule-> ('command: name') -> hourly();' inside 'schedule'. – MarcosRJJunior