[英]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.