[英]In Laravel, should we use Event to reduce controller dependency?
假設我們要實現一個Facebook Like
按鈕,在后端,通過此簡單操作可能會發生很多事情。 例如: crawl page
, extract page data
, store page info
, associate with user
等...
在為每個步驟創建模塊(庫+存儲庫)之后,我們需要將它們放到控制器中。 為每個模塊創建控制器比將所有模塊注入單個控制器會更好嗎?
為了說明代碼, A是否比B更可維護 ?
A:
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數量的好方法(還可以防止控制器變胖)。
Laravel中的控制器旨在為您的Web應用程序提供終結點,並提供一些基本功能。 您不應該在兩個控制器之間進行通信-將代碼抽象到控制器可以簡單調用的單獨的類中。 這樣,您的控制器就可以保持分離狀態,並專注於各自路由的意圖,但仍可以調用所需的復雜域級別功能,而不會影響通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.