Laravel 5 "класс не существует" при использовании планировщика


Я пытаюсь использовать планировщик в первый раз, чтобы вызвать метод:

protected function schedule(Schedule $schedule)
    {   
        $schedule->call('MyClassName@myMethodName')
            ->everyMinute();
    }

Вызываемый мною класс определяется в App/Http/Controller следующим образом:

namespace AppHttpControllers;

use AppHttpRequests;
use AppModelsReaction;
use View;
use Request;

class MyClassNameController extends Controller {

Но каждый раз, когда запускается планировщик, он gaves:

  [ReflectionException]
  Class MyClassName does not exist

Как я мог это исправить ?

1 2

1 ответ:

Не следует вызывать методы контроллера таким образом. Методы контроллера предназначены для обработки HTTP-запросов.

Содержимое myMethodName должно быть вытянуто в команду. Вы можете узнать о создании команд здесь.

Помимо этого, причина, по которой вы получаете ReflectionException, заключается в точной причине, по которой исключение заявляет: MyClassName не является допустимым классом.

$schedule->call('App\Http\Controllers\MyClassNameController@myMethodName')

Выше указано полное имя класса, на который вы пытаетесь сослаться. Ты мог бы в качестве альтернативы импортируйте этот класс в верхнюю часть файла и используйте join

use App\Http\Controllers\MyClassNameController;

// ...

$schedule->call(join('@', [ MyClassNameController::class, 'myMethodName ]))

Но опять же, вы не должны вызывать методы контроллера таким образом.