Symfony2:放置业务逻辑的最佳场所

时间:2012-07-13 21:13:13

标签: symfony

我读到一个好的做法是实体轻,只有吸气剂和制定者。但是我有一些逻辑的自定义方法,例如。

public function calculatePrice(){

  /*
 Here I have to do many math operations 
 including access to other repositories to get 
 specific data (taxes, comissions, ect) from others entities
*/


}

将这种“更复杂的方法”放在哪里:

//in controller
$product->calculatePrice()  

//in twig templates
{{ product.calculatePrice }}

1 个答案:

答案 0 :(得分:11)

我喜欢将业务逻辑与Service类中的实体相关联。 IMO,实体存储库应该只负责查询数据库中实体组的多个项目,或者非常具体的“findBy”方法(例如:获取属于Messages的所有User isRead = 0 })。

通常情况下,您会发现自己使用多个服务类来处理特定的业务逻辑块 - 将所有这些保留在服务层而不是将其整合到存储库中更容易(也更清晰)。

使用业务逻辑服务将导致更多模块化代码。如果您的Product实体和repo不包含任何业务逻辑(通常每个应用程序非常具体),您可以更轻松地在其他项目中重用这些类,而无需进行大量清理。