Symfony 4 捆绑包工作

Posted

技术标签:

【中文标题】Symfony 4 捆绑包工作【英文标题】:Symfony 4 bundles working 【发布时间】:2018-05-15 14:18:04 【问题描述】:

如何在 Symfony 4 上创建库包?

在 Symfony 3 中我使用这个命令:php bin/console generate:bundle 但在新版本中不起作用。 是否可以使用像 Symfony 3 这样的包,例如,如果不可能,我有博客包和电报机器人包如何在 Symfony 4 中模拟?

【问题讨论】:

symfony.com/blog/symfony-4-a-new-way-to-develop-applications @StephanVierkant 我在这里找不到答案 不,因为 Symfony 4 不能这样工作。阅读medium.com/@fabpot/fabien-potencier-4574622d6a7e 这个问题是相关的,因此不需要反对票。目前还没有关于创建 Symfony 4 应用程序的官方文档,除了来自 Symfony 2 / 3 的几乎复制粘贴,另一方面,这不太相关。 @forsberg 谢谢你的回答 【参考方案1】:

SensioGeneratorBundle 已被 Symfony Maker Bundle 取代 - 请参阅 https://symfony.com/blog/introducing-the-symfony-maker-bundle 了解更多信息。

【讨论】:

请告诉我命令之类的示例,我在这里找不到答案 @A.Seddighi 如果您无法理解链接,那么现在最好坚持使用 S3.4。在撰写本文时,Symfony 4 昨天刚刚发布,需要一些阅读才能理解。我还应该指出,您很可能不想创建捆绑包。 @Cerad 那么你现在如何让你的应用在 Symfony 4 中解耦呢? SoC(Seperation of Concerns)是主要的 Symfony 2 和 3 范例,该框架非常有助于保持这条规则的正确性。 @forsberg Symfony 2 首次发布几年后,创建者发布了一个所谓的Best Practices 文档,其中不鼓励使用特定于应用程序的包。有时我发现创建特定于应用程序的捆绑包仍然有意义。通常当捆绑包是真正独立的并且需要一些额外的配置时。但要开始使用,通常最好遵循推荐的做法。 @Cerad 是的,我知道最佳实践。 “劝阻”部分适用于不能在其他应用程序中“按原样”使用的捆绑包(请参阅symfony.com/doc/current/best_practices/…)。但是,我确实创建了可重复使用的捆绑包。关于脱钩的问题仍未得到解答。【参考方案2】:

Fabien Potencier 在 Symfony 4 最佳实践博文中说“无捆绑应用程序只是 Symfony 4 的最佳实践变化之一”。

你不能生成新的包,你可以为你的整个项目使用默认的“App”包。

您可以查看此网址以获取有关主题的博客文章 Symfony 4: Monolith vs Micro

【讨论】:

我想为共享代码等生成库包。像学说或guzzleHttp 我很抱歉我的回答太晚了,我希望你在发表评论之前已经解决了你的问题。我希望我理解正确。如果你想为所有 symfony 4 项目创建一个包并且你想发布 flex 包管理器,请阅读下面的最佳实践页面。 Best Practices for Reusable Bundles【参考方案3】:

尝试安装 GeneratorBundle:more info

composer require sensio/generator-bundle

然后你可以像这样生成你的Bundle:more info

php bin/console generate:bundle

【讨论】:

【参考方案4】:

首先创建一个src/Acme/TestBundle/ 目录并添加一个名为AcmeTestBundle.php 的新文件:

// src/Acme/TestBundle/AcmeTestBundle.php
namespace App\Acme\TestBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeTestBundle extends Bundle


在 config/bundles.php 中添加这一行后:

App\Acme\TestBundle\AcmeTestBundle::class => ['all' => true],

【讨论】:

【参考方案5】:

自 Symofony 2.x 以来,创建包的逻辑没有改变。但是现在包只是包,用于可重用的功能。 如果您想开发自己的捆绑包,只需关注此帖子Symfony2 - creating own vendor bundle - project and git strategy 由于 4.x 不再支持 Symfony Generate Bundle,您必须关注其他帖子:Best Practices for Reusable Bundles

【讨论】:

以上是关于Symfony 4 捆绑包工作的主要内容,如果未能解决你的问题,请参考以下文章

我会为了啥做一个捆绑包? (Symfony 2)

删除捆绑包后的 symfony 致命错误

错误Symfony 4与DataTables Omines捆绑

在symfony 4中映射实体

Symfony 无法注册捆绑包

Symfony - 如何覆盖不在捆绑包中的供应商组件