避免代码重复的最佳实践(symfony2)


Best practice to avoid code repeating ( symfony2 )

我有四个REST控制器,它们具有完全相同的六种方法。它们之间唯一的区别是它们使用的实体。

我在想一些具有这些方法的先例抽象控制器,当然还有一个性质,它将成为实体。每个REST控制器都将扩展这个抽象控制器,并且只覆盖这个属性。

这是我的想法,但我不确定这是否是最佳实践,尤其是在Symfoy2中。

在我使用Symfony2和FOSRestBundle进行的一个项目中,我们遇到了完全相同的情况。

我们设法将所有内容放入一个基本控制器类中,该类扩展了FOSRestController,并由所有其他控制器扩展。如果您使用的是sensio/framework额外捆绑包,那么您甚至不需要编写代码来获取单个实体。我们还使用MySQL和Elastic Search的混合配置,基本控制器类实现了查询ElasticSearch的方法,包括ACL信息,因此逻辑主要在基本控制器中。