Мне нужен код от моего контроллера, который запускается каждые десять минут. Достаточно легко с помощью Scheduler
и Commands
. Но. Я создал Command
, зарегистрировал ее с помощью Laravel Scheduler
(в Kernel.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>'); }
Попробуйте use Full\Path\To\Your\Controller;
в вашем коде команды и использовать метод статически:
public static function someStaticMethod() { return 'Hello'; }
В коде команды:
echo myClass::someStaticMethod();