继承条令模型以保持自动生成的代码与自定义代码分离:好主意



我最近做了一些Symfony2项目,使用条令作为ORM。

有一件事一直困扰着我,那就是实体中自动生成的代码/样板代码(字段定义、getter、setter、映射)和业务逻辑之间的混合。

您最终会得到大约600行代码实体文件,其中只有10%是业务逻辑(当然,很多业务逻辑通常都在Repository类中,但仍然如此)。

为了更清楚起见,我正在考虑将代码拆分,以将业务逻辑保留在一个单独的类中,该类将扩展Entity,比如有一个包含样板代码的Entity文件夹和一个包含真实代码的BusinessEntity文件夹。

1) 你认为这是一个好的设计模式吗?2) 它能在没有太多麻烦的情况下完成吗?

我们扩展了EntityGenerator以生成特征而不是类。每个实体都被生成为一个类,并简单地导入包含所有样板代码的特性。这种方法有几个优点。

  • 您仍然可以生成实体并保持自定义业务逻辑不变
  • 所有生成的代码都与您的自定义代码完全分离
  • 在使用表继承或扩展某个基本实体的情况下,仍然可以从另一个实体进行扩展

只有PHP>=5.4支持Trait。

我说您可以为业务逻辑使用实体存储库,这是不是错了?http://www.masnun.com/2012/11/12/symfony2-doctrine-custom-entity-repositories.html

最新更新