来自Artisan Command的Laravel 5运行控制器方法

时间:2017-05-15 09:21:46

标签: laravel

我在Controller中有功能,我希望该功能根据一些随机设置的cron作业执行。我想知道如何在Artisan Command中运行Controller函数。

我已经看到了这个链接:Laravel 5 - how to run a Controller method from an Artisan Command?

但对我而言,这似乎并不是最安全/最好的方法。有没有人这样做过?

1 个答案:

答案 0 :(得分:0)

也许你可以通过app()控制器的实例并调用它的方法?

实施例: app()->make(\App\Http\Controllers\UserController::class)->someMethod();

但是......这不是正确的方法。对我来说,正确的方法是将您的方法逻辑放入您应用程序的注册服务中,并在控制器和命令中调用它:

class CronJobService
{
    public function handle($something)
    {
        // Do stuff...
    }
}

class UserController
{
    public function runCronJobs(CronJobService $cronjob)
    {
        $cronjob->handle($something);
    }
}

class MyRandomCommand
{
    public function __construct(CronJobService $cronjob)
    {
        $this->cronjob = $cronjob;
    }

    public function handle()
    {
        $this->cronjob($something)
    }
}