【问题标题】:Symfony2 Bundle SystemSymfony2 捆绑系统
【发布时间】:2011-10-15 11:34:25
【问题描述】:

我只是在阅读 Symfony2 圣经,我有点卡在捆绑系统上。这是一个很棒的功能,但我不太确定如何将我的平面 PHP 应用程序拆分为包。这是我第一次将我的 PHP 代码拆分成一个功能齐全的 MVC 框架。

我正在开发一些在线游戏(基于 PHP),但我将如何定义捆绑包?它是像一个包含所有控制器和功能的单一 onlinegame1 捆绑包 - 还是像一个登录捆绑包、一个注册捆绑包、一个战争捆绑包 - 为我得到的每个 PHP 文件总结了一个捆绑包?

我想从头开始正确,但我不太确定我是否理解该功能。

【问题讨论】:

  • 基本上你可以把任何你喜欢的东西放进一个 Bundle 里面 :) 我建议你在移植整个应用程序之前先从一些小玩意开始,这样你首先会有感觉,你还有空间去做错误和玩耍。例如,您可以尝试集成处理身份验证和帐户管理的现有用户包。
  • 谢谢,我想我会这样做。我应该在合适的时候理解它:)

标签: php symfony


【解决方案1】:

您可以将 bundle 视为一个独立的可重用组件 - 至少在大多数情况下是这样。

让我们想象一个个人博客网站。我将其拆分为ArticleBundleUserBundleCommentBundle,最后是MainBundle,它们会将所有这些捆绑在一起,创建您的网站。要点是,您可以以 ArticleBundle 为例,在其他项目中轻松重用它,而无需将其绑定到任何其他捆绑包。

来自Symfony2 book

捆绑包类似于其他软件中的插件,但更好。 关键区别在于 Symfony2 中的一切都是捆绑包, 包括核心框架功能和编写的代码 为您的应用程序。 Bundles 在 Symfony2 中是一等公民。 这使您可以灵活地使用打包在 第三方捆绑包或分发您自己的捆绑包。它使它 易于挑选和选择要在您的应用程序中启用的功能 并以您想要的方式对其进行优化。

【讨论】:

  • +1 表示可重用性。我认为这是最重要的关键字。