假设我们要实现一个 FacebookLike
按钮,在后端,这个简单的动作可能会发生很多事情。例如: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)
...
乙:
controllers/
like.php
//and in like.php
use Lib/CrawlInterface;
use Lib/ExtractInterface;
use ...
function __construct (CrawlInterface $crawl, ExtractInterface $extract, ...)
显然这不是一个黑白问题,但我想知道是否Event
应该这样使用,因为这似乎是减少每个控制器上 DI 数量的好方法(也可以防止控制器变胖。)