为了账号安全,请及时绑定邮箱和手机立即绑定

Symfony2概念问题:普通捆绑包与特定捆绑包

Symfony2概念问题:普通捆绑包与特定捆绑包

PHP
POPMUISE 2019-12-16 10:44:28
Symfony2概念问题:普通捆绑包与特定捆绑包关于我的Symfony2应用程序,我有几个问题。它将有一个前端和一个后端,并且它们将使用一些通用代码(例如日期显示器,分页器,一些经常使用的模板等)。因此,我创建了一个FrontendBundle和一个BackendBundle,它们分别包含各自的布局。第一个问题:为前端和后端创建捆绑包(这是甚至没有控制器的“通用”捆绑包)的优良作法吗?第二个问题:我读过一本食谱,不应该将布局放在成束的东西中,而应该放在app / Resources / views /目录中。我已经有一个base.html.twig文件了,我想知道是否也应该像frontend_layout.html.twig文件一样放置布局?我创建了一个名为RootBundle的捆绑包,其中包含我的应用程序在前端和后端所需的所有内容。这是一个好习惯吗?或者我应该为提出的每个功能创建专用的包,例如PaginatorBundle,DateDisplayerBundle等?我有一个“杂项”捆绑包,其中包含我不知道放在哪里的所有东西,这听起来很奇怪。你是怎样做的?
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

我建议创建一个DateDisplayerBundle和PaginatorBundle,而不是将它们的相关代码放在更通用的捆绑软件中。这有几个原因:

  • 每个捆绑软件的作用非常明确,您知道代码在哪里。

  • 当您有单独的捆绑包时,在一个不同项目之间共享功能块(日期显示器,分页器)会更简单,而您可能需要修剪一个捆绑包。

没有硬性规定说捆绑软件必须有控制器。捆绑包可以包含业务逻辑,模板,控制器和配置的任何组合,但是对您可以在其中存储的内容没有任何限制。

另一方面,如果您的功能不是很复杂,则可能根本不保证将其包含在捆绑软件中。在这种情况下,您可以为其创建一个库/vendor。Symfony以这种方式使用了许多库(例如,参见Monolog和Doctrine。)

关于第二个问题,我认为保留布局的原因app\Resources\views是因为它是您跟踪所有布局的便捷方式。当您的项目包含许多捆绑销售商品时,您可能会忘记某个布局的位置。但是,如果将它们全部放在一个集中的位置,您将始终确切知道要看的位置。与Symfony2中的许多事情一样,这不是一成不变的规则。您可以轻松地将布局存储在捆绑中,但是我不建议这样做。

至于关于一般Root捆绑包的问题,我想说在大多数情况下,您应该避免在一个捆绑包中拖弄一堆其他功能。请参阅我先前的有关保持捆绑软件特定性的观点。当我开始使用Symfony2进行开发时,在确定应将哪些代码放入哪个包中时遇到了一些麻烦。这不是我习惯于思考编程的方式。但是最终您开始看到拼图的各个部分如何匹配,这使确定捆绑结构变得更加容易。


查看完整回答
反对 回复 2019-12-16
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您的观点很不错,但我强烈不同意您关于将某些内容放入vendor文件夹的建议。此文件夹在您的存储库中应被忽略,正在创建并用bin/vendors脚本填充。

查看完整回答
反对 回复 2019-12-16
  • 3 回答
  • 0 关注
  • 373 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信