我在Controller中有功能,我希望该功能根据一些随机设置的cron作业执行。我想知道如何在Artisan Command中运行Controller函数。
我已经看到了这个链接:Laravel 5 - how to run a Controller method from an Artisan Command?
但对我而言,这似乎并不是最安全/最好的方法。有没有人这样做过?
答案 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)
}
}