如何在 Symfony3 中自动生成一个包?

How to auto generate a bundle in Symfony3?

我尝试使用官方网站上的说明在 Symfony3 中自动生成一个包:https://symfony.com/doc/current/bundles.html,但失败了。

我在我的项目中创建了一个目录 \src\TestBundle,其中有一个文件 TestBundle.php。我从 Bundle 扩展了我的 class TestBundle 并在 class 声明之前添加了 use Symfony\Component\HttpKernel\Bundle\Bundle; 行。

我将我的新包名称添加到 AppKernel.php 中的包列表中。

最后,当我执行 $ php bin/console generate:bundle --namespace=TestBundle 时,我得到这个错误:

PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "TestBundle" from namespace "TestBundle".

知道为什么会这样吗?

如果您启动此命令:

php bin/console generate:bundle --namespace=TestBundle

Symfony 为您创建 Bundle,您无需创建文件并将其添加到 AppKernel 文件中。

尝试删除有关 TestBundle 的所有文件和参考,仅在启动命令后,Symfony 将为您创建并注册 Bundle。

相反,我想手动创建那些文件,您需要创建目录 \src\TestBundle 和里面的文件 TestBundle.php。 在你需要将它注册到你的 AppKernel 之后。 在您需要告诉 composer 加载该包之后,如果尚未完成,请在 composer.json

中使用此配置 autoload
"autoload": {
    "psr-4": {
        "": "src/"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},

最后在您的控制台中启动命令:

composer dump-autoload