0

在我的 Symfony2 项目中,我有一个 ModelBundle 来保存我的实体,以及用于前端、后端等的其他包,这些包使用了该 ModelBundle。

我有几个特定于模型的函数来执行一些特定于实体的任务。我把这些放在哪里?

  1. 我是否在我的实体文件夹旁边创建一个单独的“模型”文件夹,并将所有这些功能放在那里?
  2. 我是否在我的“ModelBundle”中创建一个将这些功能作为操作保存的控制器?这可能很奇怪,因为在我看来,控制器接受 HTTP 请求并返回 HTTP 响应,所以它不适用于这种情况。
  3. 我是否将它们放在实体类本身中?这好看吗?当我重新生成我的 ORM 时,它们是否有可能被覆盖?
  4. 我在寻找自定义存储库吗?我可以制作这些并将它们放入“模型”文件夹或其他东西中。http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-objects.html#custom-repositories

PS:我喜欢 Symfony2,但是当每个人都有一套明确的框架最佳实践时,我会很高兴 :-)

4

1 回答 1

1

了解您计划编写哪种类型的特定于模型的函数会很有帮助。

如果该功能适用​​于您已经从数据库中获取的实体,则它属于实体类。

如果功能与根据特定标准查找实体或实体组有关,则它属于自定义存储库类。

我不喜欢认为模型类和实体类应该不同。恕我直言,这是不必要的抽象级别。

您认为此功能不属于控制器是正确的。

如果您确实使用自定义存储库,我建议将它们保存在“实体”文件夹或“存储库”文件夹中。我个人将我的保留在“实体”中,但这可能是长期使用 Doctrine 1 并习惯于“表”类的副作用。

我希望这会有所帮助,但如果您有任何疑问,请发布更多关于您希望完成的内容的详细信息。

于 2011-09-23T21:28:00.177 回答