如果每个爬虫出于不同的原因而存在,您可以为您的实例使用任意名称,例如:
App::bind('crawler.allArticles', 'PageCrawler');
App::bind('crawler.latestArticles', 'FeedCrawler');
对于控制器:
App::bind('CrawlerController', function($app) {
return new CrawlerController(
App::make('crawler.allArticles'),
App::make('crawler.latestArticles')
);
});
然后,您的控制器代码将以不同的方式使用每个爬虫:
public function showLatestArticlesAction()
$latestArticles = $this->latestArticlesCrawler->crawl();
// ...
}
public function showAllArticlesAction()
$allArticles = $this->allArticlesCrawler->crawl();
// ...
}
如果您只有一个爬虫列表,其中每个爬虫都用于同一件事,您可能想要执行以下操作:
App::bind('crawlers', function($app) {
return [
App::make('PageCrawler'),
App::make('FeedCrawler'),
];
});
在您的控制器中,您将通过如下配置获得“爬虫”列表:
App::bind('CrawlerController', function($app) {
return new CrawlerController(App::make('crawlers'));
});
您的控制器代码可能是这样的:
public function showArticlesAction()
$allArticles = array();
foreach ($this->crawlers as $crawler) {
$allArticles = array_merge($allArticles, $this->crawler->crawl());
}
// ...
}