gpt4 book ai didi

php - 无捆绑 Symfony 4 中的整体结构

转载 作者:行者123 更新时间:2023-12-02 03:35:31 24 4
gpt4 key购买 nike

我开始使用和测试 Symfony 4 进行主项目迁移。我习惯了 Symfony 告诉我如何构建文件,但现在当没有更多的 bundle 时,我想知道如何构建巨大的整体应用程序。

现在扩展:约 300 个路由、约 70 个 Controller 、约 90 个实体、约 20 个 bundle

services.yaml 应该是什么样子? - 我应该保留在 App 命名空间中还是可以模拟 bundle ?每个组件的服务配置应该放在哪里?

服务和 Controller 应如何在目录中分开? - 我应该选择 src/Service/{Something}/{Something}Manager.php 还是留在 src/{Something}/Service/{Something}Manager.php 并且不使用 Bundle 关键字?为什么?

您会将 UserAuthenticationProvider 和/或 WebSocketServer 放在哪里?

最佳答案

我为遗留的整体应用程序制作了一组新的 REST API,但遇到了同样的问题。

我先回答这个问题:服务和 Controller 应该如何在目录中分开?

我沿着src/Service/{Something}/{Something}Manager.php路径走下去,因为我认为那就是这样。随着项目的发展,我对此感到遗憾,并将转移到 src/{Something}/Service/{Something}Manager.php

为什么?

  1. 我发现命名空间的分离更容易阅读并且更容易更难意外使用错误的类。
  2. 现在,我将文件分散到整个应用程序中,将其抽象为可供其他应用程序重复使用的库要困难得多。
  3. 我无法轻松地重构功能 - 一切都分散在交织在一起。如果我要转换一个整体,我更愿意重构由某些函数绑定(bind)的代码,以便我可以继续工作在继续下一步之前。

还有其他原因,但感觉有必要在应用程序变得更大之前将其分离出来。

services.yaml 应该是什么样子?嗯, Autowiring 非常棒。我会将您的服务 yaml 保留在各个功能分区中(如上所述)并开始重构它们。使用默认的 Autowiring 配置,您会发现很少需要显式定义。

您会将 UserAuthenticationProvider 和/或 WebSocketServer 放在哪里?

对于提供者,可能类似于src/Security/Authentication/Provider/UserAuthenticationProvider.php

对于 WS 服务器,我不太确定 - 这取决于它在应用程序中的位置以及使用方式。

关于php - 无捆绑 Symfony 4 中的整体结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50346493/

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