2014-04-12 56 views
1

我有四个REST控制器,它们有完全相同的六种方法。它们之间的唯一区别是它们正在使用的实体。避免代码重复的最佳做法(symfony2)

我正在考虑一些先例抽象控制器与这些方法,并与当然将作为实体的一个属性。每个REST控制器都将扩展此抽象控制器,并只覆盖此属性。

这是我的想法,但我不确定这是否是最佳实践,特别是在Symfony2中。

+0

我认为你可以做到这一点,而不是最佳实践的问题,但不熟悉'Symfony' tho。 –

+0

最好的做法是好的目的,但不要生活在,因为即使当你有一个纯粹的“最佳实践”的包,它将会改进......如最佳实践。尽可能创建bundle \ app,然后随着时间的推移改进。不要完全依赖你不完全理解/相信的最佳实践。 – qooplmao

+0

你是否尝试过使用非抽象父类? –

回答

0

在我正在与Symfony2和FOSRestBundle合作的项目中,我们遇到了完全相同的情况。

我们设法将所有东西都放入一个扩展了FOSRestController的基础控制器类中,并由所有其他控制器扩展。如果你使用sensio/framework-extra-bundle,你甚至不需要编写代码来获取单个实体。我们还使用了包含MySQL和Elastic Search的混合配置,并且基本控制器类实现了查询ElasticSearch的方法,其中包括ACL信息,以便逻辑主要位于基本控制器中。