Intereting Posts

Laravel 5 – как запустить метод Controller из команды Artisan?

Мне нужен код от моего контроллера, который запускается каждые десять минут. Достаточно легко с помощью Scheduler и Commands . Но. Я создал Command , зарегистрировал ее с помощью Laravel SchedulerKernel.php ), и теперь я не могу создать экземпляр Controller . Я знаю, что это неправильный подход к решению этой проблемы, но мне просто нужен был быстрый тест. Есть ли способ, разумеется, взломанный способ, чтобы добиться этого? Спасибо.

Обновление # 1:

Command :

 <?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Http\Controllers\StatsController; class UpdateProfiles extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'update-profiles'; /** * The console command description. * * @var string */ protected $description = 'Updates profiles in database.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { StatsController::updateStats('<theProfileName>'); } } 

updateStats() в StatsController.php

 public static function updateStats($theProfileName) { // the body } 

Это возвращает FatalErrorException :

 [Symfony\Component\Debug\Exception\FatalErrorException] syntax error, unexpected 'if' (T_IF) 

Обновление № 2:

Оказывается, у меня была опечатка в updateStats() , но ответ by @ alexey-mezenin работает как шарм! Также достаточно импортировать Controller в Command :

 use App\Http\Controllers\StatsController; 

И затем инициализируйте его, как обычно:

 public function handle() { $statControl = new StatsController; $statControl->updateStats('<theProfileName>'); } 

Related of "Laravel 5 – как запустить метод Controller из команды Artisan?"

Попробуйте use Full\Path\To\Your\Controller; в вашем коде команды и использовать метод статически:

 public static function someStaticMethod() { return 'Hello'; } 

В коде команды:

 echo myClass::someStaticMethod();