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 ответ:
Не следует вызывать методы контроллера таким образом. Методы контроллера предназначены для обработки HTTP-запросов.
Содержимое
myMethodName
должно быть вытянуто в команду. Вы можете узнать о создании команд здесь.Помимо этого, причина, по которой вы получаете
ReflectionException
, заключается в точной причине, по которой исключение заявляет:MyClassName
не является допустимым классом.$schedule->call('App\Http\Controllers\MyClassNameController@myMethodName')
Выше указано полное имя класса, на который вы пытаетесь сослаться. Ты мог бы в качестве альтернативы импортируйте этот класс в верхнюю часть файла и используйте
join
use App\Http\Controllers\MyClassNameController; // ... $schedule->call(join('@', [ MyClassNameController::class, 'myMethodName ]))
Но опять же, вы не должны вызывать методы контроллера таким образом.