fro*_*rli 5 php model-view-controller symfony doctrine-orm
在Symfony/Doctrine/PHP项目中,客户抱怨我们破坏了软件开发最佳实践.投诉是关于源代码的不正确分层以及缺乏单元测试.
正如我们所看到的,我们一直在使用适当的MVC.
($this->get('security.context')->isGranted('ROLE_ADMIN')
和$this->get('security.context')->getToken()->getUser()
.请注意,Symfony已经改变了模型,因为我们开始了这个项目 - 但仍保持向后兼容.
在控制器中,客户明确表示控制器处理错误:
return $this->render('some_template.html.twig');
)客户端说最佳实践是让控制器简单地将请求传递到系统中的另一层.
此外,他说用户管理员基于"自定义模型",其中所有用户和角色都存储在数据库中 - 这使得插入不同的访问控制系统变得困难.特别是因为角色名称似乎是硬编码的,例如通过命令($this->get('security.context')->isGranted('ROLE_ADMIN')
.
所以; 这个领域有最终的最佳实践吗?什么属于控制器,并且Doctrine,Twig,Symfony Security"足够"是"控制器下方"的单独层.
例如,控制器和Doctrine之间是否还有另一层?
资料来源: http: //fabien.potencier.org/what-is-symfony2.html
首先,什么是 Symfony2?
首先,Symfony2 是一组可重用的独立、解耦且内聚的 PHP 组件,可解决常见的 Web 开发问题。
那么,基于这些组件,Symfony2也是一个全栈Web框架。
根据您的项目和需求,您可以选择一些 Symfony2 组件并使用它们启动您的项目,或者您可以使用全栈框架并从它提供的开箱即用的紧密集成中受益。在两种不同的方法之间进行选择实际上取决于您。
Symfony2 是 MVC 框架吗?
Symfony2 实际上是为控制器部分、视图部分提供工具,但不是模型部分。您可以手动创建模型,也可以使用任何其他工具(例如 ORM)。当然,最知名的 ORM(例如 Doctrine2 和 Propel)存在紧密集成;但它们是可选的依赖项。Symfony2 核心功能不依赖任何 ORM,也永远不会依赖任何 ORM。
Symfony2 是一个 HTTP 框架;它是一个请求/响应框架。这才是大事。Symfony2 的基本原则以 HTTP 规范为中心。
Symfony 关于最佳实践: https://symfony.com/doc/current/best_practices.html
您应该认真阅读有关控制器最佳实践的内容: https ://symfony.com/doc/current/best_practices.html#controllers
您可以阅读这个答案/sf/answers/1519132331/