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

标签 php symfony structure business-logic symfony4

我开始使用和测试 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/

相关文章:

php - 带有默认占位符的 symfony2 路由

c# - 在构建时将 C++ 结构转换为 C# 结构

c - 警告 : passing argument 2 of 'calcFx' makes integer from pointer without a cast

javascript - 在逻辑 block 之前引入新的 If 语句时如何构建代码

php - 追踪段错误 11 到大型 PHP 代码库

php - 使用关联类时如何删除实体?

javascript - 在 json_encode 中传递 � 或 ü

php - Symfony 从实体标题创建 slug

PHPStorm 7 在 Windows 上找不到 PHP 解释器

php - 所有 WordPress 选项作为单个选项(序列化多维数组)还是多个选项?