2017-05-15 94 views
0

我有一個控制器的功能,我希望該功能根據一些隨機設置的cron作業執行。我想知道如何在Artisan Command中運行控制器功能。Laravel 5從Artisan命令運行控制器方法

我已經看到了這個鏈接:Laravel 5 - how to run a Controller method from an Artisan Command?

但對我來說似乎並不喜歡這樣做最安全/最好的方法。有沒有人做過?

+0

爲什麼你會希望把這個方法在你的控制器?你可以製作一個cronjob執行的控制檯命令? – Neat

回答

0

也許你可以通過app()創建控制器的實例並調用它的方法?

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

BUT。這是不正確的方式。對我來說,正確的方法是把你方法的邏輯爲,從您的應用程序的註冊服務,並調用它無論是在控制器和您的命令:

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) 
    } 
} 
相關問題