在Laravel中,我们应该使用Event来减少控制器依赖吗?

时间:2013-10-18 15:00:29

标签: php events dependency-injection laravel laravel-4

假设我们要实现一个Facebook Like按钮,在后端,这个简单的操作可能会发生很多事情。例如:crawl pageextract page datastore page infoassociate with user等...

为每个步骤创建模块(库+存储库)后,我们需要将它们放在控制器中。为每个模块创建控制器比在单个控制器中注入所有控制器更好吗?

为了在代码中说明,比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 个答案:

答案 0 :(得分:1)

Laravel中的控制器旨在通过一些基本功能为您的webapp提供端点。您不应该在两个控制器之间进行通信 - 将您的代码抽象为控制器可以简单调用的单独类。通过这种方式,您的控制器可以保持分离并专注于各自路由的功能,但仍然可以调用所需的复杂域级功能,而不会破坏通信。

相关问题