Laravel 5" Class不存在"使用调度程序时

时间:2015-04-22 00:41:37

标签: dependency-injection cron laravel-5

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

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

I类调用以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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

您不应该以这种方式调用控制器方法。控制器方法用于处理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 ]))

但是,你不应该以这种方式调用控制器方法