这个问题有点难以解释,但我会尽我所能。
说,我正在创建一个作业添加聚合器站点。为此,我将抓取10个作业网站,解析HTML 并得到所有的果汁。
现在,由于每个网站模板,网址及其包含的信息量都是唯一的,因此有些东西会告诉我抓取部分 应该单独组织。
通常情况下,我可以把它全部放在一起
class CrawlerController extends Controller {
public function fooDotComAction(){
}
public function barDotNetAction(){
}
}
你可以看到上面的内容仍然比在DefaultController中转储我的所有爬虫逻辑更好, 但即使我的例子看起来也不高效或模块化。
这似乎是一种不好的做法,如果Symfony中存在某种功能,我就会徘徊 提供此类问题的实施或指南。
答案 0 :(得分:0)
您的问题过于宽泛,但您已找到符合您需求的设计模式,然后实施它。您将需要创建php类并将它们声明为服务。
Symfony推广面向服务架构的理念,并为关注点分离提供强大的解决方案:The Dependency Injection Component。简而言之,该组件提供implementation of the Service Container:用于配置,绑定和创建单独服务对象的工具。
您的业务代码将包含在域服务中,您的控制器将只组织输入和输出并调用域服务
答案 1 :(得分:0)
结帐https://codereviewvideos.com/blog/symfony-compiler-pass-tutorial/
它将以干净的方式向您展示如何使用标记服务和编译器传递分离每个“爬虫”,我认为将是一种干净的方式。< / p>