假设我们要实现一个 Facebook Like
按钮,在后端,这个简单的操作可能会发生很多事情。例如:crawl page
、extract page data
、store page info
、associate with user
等...
为每个步骤创建模块(库 + 存储库)后,我们需要将它们放在控制器中。为每个模块创建控制器是否比将所有模块注入单个控制器更好?
为了在代码中说明,A 比 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)
...
乙:
controllers/
like.php
//and in like.php
use Lib/CrawlInterface;
use Lib/ExtractInterface;
use ...
function __construct (CrawlInterface $crawl, ExtractInterface $extract, ...)
显然这不是一个非黑即白的问题,但我想知道Event
是否应该以这种方式使用,因为这似乎是减少每个控制器上的 DI 数量的好方法(也可以防止控制器变胖)。
Laravel中的控制器旨在为您的Web应用程序提供具有一些基本功能的端点。 您不应该在两个控制器之间进行通信 - 将代码抽象为控制器可以简单地调用的单独类。 这样,您的控制器将保持分离并专注于其各自的路由要做什么,但仍然可以调用您想要的复杂域级功能,而不会破坏通信。