2013-10-18 55 views
2

假設我們要實現一個Facebook Like按鈕,在後端,這個簡單的動作可能會發生很多事情。例如:crawl pageextract page datastore page infoassociate with user等等在Laravel中,我們應該使用Event來減少控制器依賴性嗎?

創建的每個步驟的模塊(庫+庫)後,我們需要把它們放在一起的控制器。爲每個模塊創建控制器會比在單個控制器中注入所有控制器更好嗎?

爲了說明在代碼中,比B更容易維護?

答:

controllers/ 
    like.php 
    crawler.php 
    extract.php 
    ... 

//and in like.php 
$page = Event::fire('page.crawler', $url); 
... 
$result = Event::fire('page.extract', $data); 
... 

//in crawler.php 
use Lib/CrawlInterface; 
function __construct (CrawlInterface $crawl) 

//in extract.php 
use Lib/ExtractInterface; 
function __construct (ExtractInterface $extract) 

... 

B:

controllers/ 
    like.php 

//and in like.php 
use Lib/CrawlInterface; 
use Lib/ExtractInterface; 
use ... 

function __construct (CrawlInterface $crawl, ExtractInterface $extract, ...) 

顯然,這不是一個黑&白的問題,但我想知道Event是否應該使用這種方式,因爲它似乎是減少每個控制器上DI數量的好方法(也可以防止控制器變胖)。

回答

1

Laravel中的控制器旨在爲您的Web應用程序提供具有一些基本功能的端點。您不應該在兩個控制器之間進行通信 - 將您的代碼抽象爲控制器可以簡單調用的單獨的類。這樣,您的控制器就會保持分離狀態,專注於各自的路線,但仍可以調用您想要的複雜的域級功能,而不會干擾通信。

+0

感謝您將端點提及到專屬控制器中。儘管我希望聽到有關事件的消息 –

相關問題