4

我读到一个好的做法有实体灯,只有 getter 和 setter。但是,例如,我有一些具有某些逻辑的自定义方法。

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 }}
4

1 回答 1

11

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

很多时候,您会发现自己使用多个服务类来处理特定的业务逻辑块——将所有这些都保存在服务层中而不是硬塞到存储库中更容易(也更简洁)。

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

于 2012-07-13T22:42:42.783 回答