2013-07-21 19 views
0

最近我一直在做一些Symfony2項目,使用原則作爲ORM。繼承原則模型以將自動生成的代碼與自定義代碼分開:好主意?

有一件事一直困擾着我,它是自動生成的代碼/樣板代碼(字段定義,getters,setters,映射)和業務邏輯之間的實體混合。

你最終得到600行代碼實體文件,其中只有10%是商業邏輯(儘管當然很多業務邏輯通常都會在存儲庫類中,但仍然存在)。

我正在考慮分割代碼以保持業務邏輯在一個單獨的類中,以擴展實體,爲了更加清晰,就像擁有包含樣板代碼的實體文件夾和帶有真實代碼的BusinessEntity文件夾。

1)你認爲這是一個很好的設計模式嗎? 2)難道沒有太多的麻煩可以完成嗎?

回答

1

我們擴展了EntityGenerator來生成traits而不是classes。每個實體都作爲一個類生成,並簡單地導入包含所有樣板代碼的特徵。這種方法有幾個優點。

  • 您仍然可以生成實體和離開自定義業務邏輯不變
  • 所有生成的代碼是乾淨地從您的自定義代碼分隔。
  • 如果您使用表繼承或擴展某個基本實體,您仍然可以從另一個實體擴展。

只有PHP> = 5.4支持Trait特性。