在Symfony中,为服务制作一个捆绑包是否是一个很好的编程实践


In Symfony, is it a good programming practice to make a bundle just for services?

我有一个提供基于REST服务的symfony应用程序。我有一个模块负责用户登录/注销/注册操作,称为UserBundle。

我还有其他捆绑包,一旦用户登录(并提供令牌哈希(,就会提供资源。

现在,对于请求的每个资源,客户端都会发回需要进行身份验证的令牌。我究竟应该在哪里放置此身份验证功能?我的意思是我知道它需要是一个可以注入到多个捆绑包中的服务,但这是否意味着我最好创建它自己的捆绑包?我将来可能需要的其他服务呢?如果我为每个包创建一个捆绑包,那么我的代码组织很快就会变得丑陋。

有什么提示吗?

我会把服务放在UserBundle中,因为UserBundle处理身份验证。

通常,我喜欢将服务放入与它们最相关的捆绑包中。 我通常还有一个"默认"捆绑包,我将有限数量的真正通用服务、实体、控制器等聚合到其中。 从理论上讲,任何进入默认的东西都可以在另一个项目中普遍使用,并且几乎总是多个其他捆绑包需要的东西。 有时,我在默认中有一些零碎的东西成熟到一个更具体但仍然通用的捆绑包(类似于您的UserBundle(中更有意义的程度。我想这可能是可以放入多个项目的东西(;这些被重构并相应地命名。

我曾经一次为任何我认为是"模块"的东西拆分出新的捆绑包。但是,这些天,我尝试限制应用程序中的捆绑包数量。我发现这是为了使代码更清晰、更易于管理;特别是因为我对任何给定模块的"边界"的想法都是绝对错误的,我最终移动了代码。 此外,主要在一个核心捆绑包中工作使导航代码变得更加简单。