【发布时间】:2019-01-27 05:01:48
【问题描述】:
我是 symfony 的新手,我正在阅读这里的最佳实践指南 https://symfony.com/doc/3.4/best_practices/business-logic.html
我有一个名为 Category 的控制器,我有这个操作方法来列出类别。
public function listCategory(Request $request, CategoryLogic $categoryLogic)
{
$categories = $categoryLogic->getAllCategory($this->getDoctrine());
return $this->render('listCategory.html.twig', ['categories' => $categories]);
}
如您所见,我所有的控制器业务逻辑都转到 -> AppBundle\Utils\CategoryLogic
我有这个方法来处理逻辑并返回类别
use AppBundle\Entity\Category;
/**
* @param Registry $doctrine
* @return array
*/
public function getAllCategory(Registry $doctrine)
{
$repositoryCategory = $doctrine->getRepository(Category::class);
$category = $repositoryCategory->findAll();
return $category;
}
目的是保持控制器清洁。这是最好的方法吗?我有点担心将逻辑类命名为 CategoryLogic
相反,我想将其命名为 Category,但是我遇到了另一个问题,因为我已经在 CategoryLogic 类中导入了use AppBundle\Entity\Category,所以不能有两个 Category 类
【问题讨论】:
-
在 Symfony 中有很多处理业务逻辑的方法,“最好的方法”取决于你的偏好。您可以将其编写为服务、控制器事件、模型中、单独的模型或实体存储库方法。最终,这将是您认为满足您需求的最佳方法。然而,对于这一点,教义通过
$categories = $em->getRepository(Category::class)->findAll();满足您的业务逻辑,并且会更加优化。但是,如果您有return $a + $b这样的条件,我会使用服务、模型或存储库。 -
@fyrye 你能举一个服务、模型或存储库的例子吗?是否将 Utils 视为服务?
-
@dev1234 您链接的“最佳实践”页面应该谨慎对待。那里有几个好主意,但不要从字面上理解所有内容。使用常识和常见的软件开发最佳实践。
-
@dev1234 由于您是 Symfony 的新手,我强烈建议您浏览一些教程,例如 KnpUniversity 上的教程并学习 Doctrine best-practices by Ocramius。找出最适合您 和您的应用程序需求的方法。您的问题只会为您提供没有单一正确答案的固执己见的答案,而不会针对每种方法写一篇文章,这更像是一个教程而不是一个答案。例如,我强烈反对当前的答案,因为它会导致不必要的腹胀
标签: php symfony symfony-3.4