gpt4 book ai didi

php - Controller 的 Symfony MVC 最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:05 24 4
gpt4 key购买 nike

在 Symfony/Doctrine/PHP 项目中,客户提示我们违反了软件开发的最佳实践。投诉是关于源代码分层不当,以及缺少单元测试。

  • 这是一个不到 5 万美元的项目。
  • 我相信客户有一位来自 Java 领域的专家,也许是 Spring Framework,正在查看源代码。

正如我们所见,我们一直在使用适当的 MVC。

  • View 逻辑完全由 TWIG 处理。
  • 数据库完全由 Doctrine 处理。
  • 我们使用 Symfony Security 进行访问控制 ($this->get('security.context')->isGranted('ROLE_ADMIN')$this->get( 'security.context')->getToken()->getUser().

请注意,自从我们开始这个项目以来,Symfony 已经稍微改变了模型——但仍然向后兼容。

在controller中客户特意说controller来处理是错误的:

  • 访问控制(通过 Symfony 安全)
  • 数据库查询(通过 Doctrine)
  • 用于发回响应的“解析和其他逻辑”(return $this->render('some_template.html.twig');)

问题

客户说最佳做法是让 Controller 简单地将请求传递到系统中更靠下的另一层

此外,他还说用户管理基于“自定义模型”,其中所有用户和角色都存储在数据库中 - 这使得插入不同的访问控制系统变得困难。特别是因为角色名称似乎是硬编码的,例如通过 ($this->get('security.context')->isGranted('ROLE_ADMIN') 等命令。

所以;这个领域有明确的最佳实践吗?属于 Controller 的东西,是 Doctrine、Twig、Symfony Security,“足以”成为“ Controller 下方”的独立层。

例如, Controller 和 Doctrine 之间是否还应该有另一层?

最佳答案

来源:http://fabien.potencier.org/what-is-symfony2.html

首先,什么是Symfony2?

首先,Symfony2 是一组可重用的独立、解耦和内聚的 PHP 组件,可解决常见的 Web 开发问题。

那么,基于这些组件,Symfony2 也是一个全栈网络框架。

根据您的项目和需求,您可以选择一些 Symfony2 组件并使用它们开始您的项目,或者您可以使用全栈框架并从它提供的紧密集成中受益盒子。在这两种不同的方法之间进行选择完全取决于您。

Symfony2 是 MVC 框架吗?

Symfony2 实际上是为 Controller 部分、 View 部分而不是模型部分提供工具。由您手动创建模型或使用任何其他工具(如 ORM)由您决定。当然,最知名的 ORM(如 Doctrine2 和 Propel)存在紧密集成;但它们是可选的依赖项。 Symfony2 的核心功能不会也永远不会依赖任何 ORM。

Symfony2 是一个 HTTP 框架;它是一个请求/响应框架。这很重要。 Symfony2 的基本原则以 HTTP 规范为中心。

关于最佳实践的 Symfony: https://symfony.com/doc/current/best_practices.html

您应该阅读有关 Controller 最佳实践的内容: https://symfony.com/doc/current/best_practices.html#controllers

您可以阅读此答案 https://stackoverflow.com/a/21701890/2160958

关于php - Controller 的 Symfony MVC 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32861202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com