我开始使用和测试 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
为什么?
- 我发现命名空间的分离更容易阅读并且更容易
更难意外
使用
错误的类。 - 现在,我将文件分散到整个应用程序中,将其抽象为可供其他应用程序重复使用的库要困难得多。
- 我无法轻松地重构功能 - 一切都分散在 交织在一起。如果我要转换一个整体,我更愿意 重构由某些函数绑定(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/