如何在 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
我尝试使用官方网站上的说明在 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