我开始使用和测试Symfony 4进行主项目迁移。我习惯于被Symfony告知应该如何构建文件,但现在当没有更多的包时,我想知道如何构建巨大的整体应用程序。
现在缩放:~300条路线,~70个控制器,~90个实体,~20个捆绑
services.yaml应该如何? - 我应该继续使用App命名空间还是可以模拟捆绑包?在哪里为每个组件提供服务配置?
如何在目录中分隔服务和控制器? - 我应该选择src/Service/{Something}/{Something}Manager.php
还是留在src/{Something}/Service/{Something}Manager.php
并且不要使用Bundle关键字?为什么呢?
你会把UserAuthenticationProvider和/或WebSocketServer放在哪里?
答案 0 :(得分:3)
我为遗留整体应用程序制作了一组新的REST API,并面临同样的问题。
我将首先回答这个问题: 如何在目录中分隔服务和控制器?
我沿着src/Service/{Something}/{Something}Manager.php
路走下去,因为我认为那是方法。随着项目的发展,我感到遗憾,并将转向src/{Something}/Service/{Something}Manager.php
为什么?
use
错误的班级。还有其他原因,但感觉需要在应用程序变大之前将其分开。
services.yaml应该如何?嗯,自动装配是惊人的。我会保持你的服务yamls在各种功能分裂(如上所述)并开始重构它们。使用默认的自动装配配置,您会发现很少需要明确的定义。
你会把UserAuthenticationProvider和/或WebSocketServer放在哪里?
对于提供者,可能类似于src/Security/Authentication/Provider/UserAuthenticationProvider.php
。
对于WS服务器,我不太确定 - 它取决于它在应用程序中的位置以及它的使用方式。
答案 1 :(得分:1)
首先,S4仍然像以前一样支持捆绑。配置部分已经重新组织了一下,但如果你已经有一个庞大的应用程序在捆绑下工作,那么你可能只考虑保持它或多或少。它应该仍然可以正常工作,只需要很少的调整。
无捆绑应用程序有几种方法。通常,您可以使用功能子目录按功能对文件进行分组,以保持组织有序。
假设您有三个现有的捆绑包,名为FooBundle,BarBundle,JarBundle
config
services
foo.yaml
bar.yaml
jar.yaml
routes:
foo.yaml
bar.yaml
jar.yaml
src
Controller
Foo
Foo1Controller
Foo2Controller
Bar
etc
Entity
Foo
foo entities
Bar
bar entities
Form
etc
templates
foo
bar
jar
你明白了。可能需要事先对这一切进行建模,特别是要看看赔率和结果可能适合的地方。并且可能使用App命名空间来处理所有事情这种方法几乎遵循Symfony 4最佳实践。不能用它来解决问题。
至少有一种方法可以按功能对文件进行分组。我不会详细介绍它,因为它绝对不是正常的Symfony方法,需要进行一些调整。但你可以这样做:
src
Blog
routes.yaml
services.yaml
BlogEntity.php
BlogVoter.php
Edit
BlogEditController.php
BlogEditForm.php
BlogEditTemplate.html.twig
etc
Show
BlogShowController.php
etc