在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之间是否还有另一层?
答案 0 :(得分:1)
来源:http://fabien.potencier.org/what-is-symfony2.html
首先,什么是Symfony2?
首先,Symfony2是一组可重用的独立,分离和内聚的PHP组件,可以解决常见的Web开发问题。
然后,基于这些组件,Symfony2也是一个完整的Web框架。
根据您的项目并根据您的需要,您可以选择一些Symfony2组件并使用它们启动项目,或者您可以使用全栈框架并从其提供的紧密集成中受益盒子。选择两种不同的方法取决于你。
Symfony2是MVC框架吗?
Symfony2实际上是为Controller部件提供工具,View部件,而不是Model部件。您可以手动创建模型或使用任何其他工具,如ORM。当然,Doctrine2和Propel等最着名的ORM存在紧密集成;但它们是可选的依赖项。 Symfony2核心功能不会也绝不会依赖任何ORM。
Symfony2是一个HTTP框架;它是一个请求/响应框架。这是大问题。 Symfony2的基本原则以HTTP规范为中心。
关于最佳做法的Symfony: http://symfony.com/doc/current/best_practices/index.html
您应该阅读此关于控制器最佳做法: http://symfony.com/doc/current/best_practices/controllers.html