我正在尝试第一次使用调度程序来调用方法:

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


我正在调用的类是通过App/Http/Controller定义的:

namespace App\Http\Controllers;

use App\Http\Requests;
use App\Models\Reaction;
use View;
use Request;

class MyClassNameController extends Controller {


但是每次调度程序运行时,它都会给出:

  [ReflectionException]
  Class MyClassName does not exist


我该如何解决?

最佳答案

您不应以这种方式调用控制器方法。控制器方法用于处理HTTP请求。

myMethodName的内容应提取到命令中。您可以learn about creating commands here

除此之外,得到ReflectionException的原因是由于异常指出的确切原因:MyClassName不是有效的类。

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


上面指定了您要引用的类的全限定名。您也可以在文件顶部导入该类,然后使用join

use App\Http\Controllers\MyClassNameController;

// ...

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


但是同样,您不应该以这种方式调用控制器方法。

关于dependency-injection - 使用调度程序时,Laravel 5“类不存在”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29785703/

10-13 01:41