快速提问:我应该将具有类似特征的代码放在 Controller Utilities Service Class 的代码中,如Benjamin Eberlei(http://www.whitewashing.de/2013/06/27/extending_symfony2__controller_utilities.html)在此博客文章中所述?
对于过渡期,我把它放在:src / ProjectName / Library
中上下文
我注意到以下内容:
我找到了一些与主题相似的问题的答案,但不完全是我之后的问题
基于我在这里单独研究的问题,这个问题似乎已经被某种程度上踩到了死亡,但我认为之前提出的问题都围绕着我实际所追求的问题。无论如何,我似乎有以下选择:
这个问题,简而言之:我在哪里提供在Symfony 2中提供通用,全局功能的类?
我提前感谢。
答案 0 :(得分:2)
这篇关于composer repositories的文档是一个很好的参考,documentation about packages that don't support Composer应该是你想要的。
另外我想要注意documentation about VCS,当你需要分叉一个Bundle并覆盖原来的那个时(我经常使用它几次)。
您可以执行以下操作 - 它不需要您拥有包装系统或其他任何东西。您只需要将程序包作为可由您的计算机使用URL访问的邮件包。
{
"repositories": [
{
"type": "package",
"package": {
"name": "my/package",
"version": "1.0.0",
"dist": {
"url": "https://github.com/my/package/archive/master.zip",
"type": "zip"
},
"autoload": {
"psr-0": {
"My\\Package\\": "src/"
}
}
}
}
],
"require": {
"my/package": "1.0.0"
}
}
如果您的软件包不支持PSR-0,那么您需要使用the option "classmap",否则您的软件包支持PSR-0,您需要使用the option psr-0。
答案 1 :(得分:1)
这将使我能够拥有所有资产,相关实体和项目特定库代码的中心位置。
定位重构
我内心向自己推断,这是一个快乐的中间立场(也许是暂时的)解决方案,这使我能够继续发展,而不是我现在所处的分析瘫痪状态。 。
以这种方式做事,我可以让flex点稍后重构到供应商目录解决方案。
如果你正在开展一个项目,并且因为有些不自然的感觉让你的实体和库代码像我一样分散在不同的包中,这将是一个很好的解决方案。
它不会更改SF2和Doctrine 2的默认行为
我之前已经对Symfony 2 Doctrine 2配置进行了修改,这允许我(正确地)将实体从包中删除并进入单独的中央命名空间。
我喜欢这个主意。我用了一段时间。使用这种方法的警告是,当您需要创建Doctrine实体时,您不再能够使用命令行界面,因为需要捆绑命名空间。
我认为这很好,因为无论如何我需要改变一切,但后来我想:
写下另一个"我在哪里把XXXX放在Symfony 2"类型问题(我确信那些关注PHP和Symfony2标签的人不厌其烦),我已经停止并将其放入捆绑包中,我将其称为资产包,并将其重命名为Core捆绑包
核心套装 这样,它根据CLI的要求捆绑在一起,它更容易理解,我可以在语义上共享该捆绑包的内容,因为它包含特定于应用程序的核心代码:
最重要的是,当我有时间真正坐下来和composer等人合作时,我可以很容易地重构它,因为它只存在于一个地方。
因此。简而言之。回答我自己的问题:我在哪里将通用库代码放在Symfony 2中?
我将它放在一个专门用于存储资产,资源和库代码的捆绑包中,这些捆绑包需要使用以下建议访问多个捆绑包:
通过composer打包并安装
当您开始使用作曲家时,请研究如何将文件结构格式化为PSR-0:
应用程序/项目 - 构建应用程序但依赖于核心软件包的软件包。
核心软件包 - 在关键点扩展SF2,包含共享资源和库代码。因为我没有改变框架的工作方式,所以文件是SF2期望它们的地方。这意味着我仍然可以使用它的实体生成器。
我在这里生成脚手架/ CRUD屏幕时遇到了问题,因为它们将被视为原型,而不是真正的应用程序功能。
SF2 Layer。 - 保持不变,不受影响。延长。