我在Symfony项目的composer.json
文件中有以下内容:
...
"twig/extra-bundle": "^3.3",
...
…和以下在我的bundles.php
文件:
...
TwigExtraTwigExtraBundleTwigExtraBundle::class => ['all' => true],
...
…当我运行composer install
时,一切似乎都安装正确。
ClassNotFoundException试图加载类" twigextrbundle& quot;从名称空间"额外树枝 TwigExtraBundle"。你是不是忘了一个"用法"?另一个名称空间的语句?在Kernel.php第23行Kernel->registerBundles()在Kernel.php第446行Kernel->boot()中的Kernel.php第133行initializeBundles()在Kernel->handle(object(SiteRequest))中的index.php第32行
我错过了哪一步?
= = = =
编辑:到目前为止,我发现了以下内容:
当运行
composer require twig/extra-bundle
时,编者说composer.lock
没有什么要改变的如果我删除
vendor
文件夹并做composer install
,正确的类似乎出现在供应商文件夹中,尽管Symfony页面仍然找不到它们。事实上,我甚至可以在PHPStorm中使用ctrl-b跳转到供应商文件夹中的类。
在您使用TwigExtraBundle
(您没有显示)的代码中,您可能会意外地出现类似
use TwigExtraTwigExtraBundle;
...
$foo = new TwigExtraBundleTwigExtraBundle();
注意重复。如果我故意像那样在类中放入代码,就会产生您现在看到的错误。
Attempted to load class “TwigExtraBundle” from namespace “TwigExtraTwigExtraBundle”
显然,解决方案是删除重复:
$foo = new TwigExtraBundle();
我想结束这个问题。
类在供应商文件夹删除和新的composer install
之后仍然没有出现的原因是我们正在使用OPCache。所以我需要在类可用之前重新启动我的Docker容器。(显然不仅是完全定义的类,而且缺乏类是OPCached的。这是一件很有趣的事情。