【问题标题】:Attempted to load class "TwigExtraBundle" from namespace "Twig\Extra\TwigExtraBundle"尝试从命名空间“Twig\Extra\TwigExtraBundle”加载类“TwigExtraBundle”
【发布时间】:2021-10-03 04:06:03
【问题描述】:

我的 Symfony 项目的 composer.json 文件中有以下内容:

...
"twig/extra-bundle": "^3.3",
...

...以及我的bundles.php 文件中的以下内容:

...
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
...

...当我运行composer install 时,一切似乎都已正确安装。

然而,每当我加载页面时,我都会收到此错误:

ClassNotFoundException 试图从 命名空间“Twig\Extra\TwigExtraBundle”。你忘了一个“使用” 另一个命名空间的声明?在 Kernel.php 第 23 行 Kernel-> registerBundles() in Kernel.php line 446 at Kernel->initializeBundles()in Kernel.php line 133 at Kernel->boot()in Kernel.php 第 196 行位于 Kernel->handle(object(SiteRequest)) in index.php 第 32 行

我错过了什么步骤?

====

编辑:到目前为止,我发现了以下内容:

  • 在运行composer require twig/extra-bundle 时,作曲家说composer.lock 没有什么可更改的。

  • 如果我删除 vendor 文件夹并执行 composer install,正确的类似乎出现在供应商文件夹中,尽管 Symfony 页面仍然找不到它们。

  • 确实,我什至可以在 PHPStorm 中使用 ctrl-b 来跳转到 vendor 文件夹中的类。

【问题讨论】:

  • 从你所拥有的出发,你尝试过composer dump-autoload 吗?也许由于某种原因需要重新扫描您的课程..
  • 好建议,但没有运气。 composer dump-autoload 没有成功。
  • 您尝试过什么解决问题的方法?在将要求添加到 JSON 配置后,您是否运行了 composer require
  • @the_nuts:我确实尝试过。没有运气。 @Nico Haase:好问题。 composer.lock 确实包含该要求,并且这些类存在于 vendor 文件夹中。我什至可以使用 ctrl-b 从 phpstorm 中的 bundles.php 文件跳转到它们。所以只有 Symfony 无法找到这些类。
  • 请通过编辑将所有此类澄清添加到您的问题中

标签: php symfony composer-php


【解决方案1】:

我想结束这个问题的循环。

在供应商文件夹删除和新的composer install 之后仍然没有显示该类的原因是我们正在使用 OPCache。所以我需要在课程可用之前重新启动我的 Docker 容器。 (显然,不仅完全定义的类,而且缺少类都是 OPCached。这是一件值得学习的有趣事情。)

【讨论】:

    【解决方案2】:

    在您使用TwigExtraBundle(您没有显示)的代码中,您可能不小心有类似的东西

    use Twig\Extra\TwigExtraBundle;
    
    ...
    
    $foo = new TwigExtraBundle\TwigExtraBundle();
    

    注意重复。如果我故意将代码像这样放在我的班级中,我会产生您所看到的错误。

    Attempted to load class “TwigExtraBundle” from namespace “Twig\Extra\TwigExtraBundle”
    

    显然解决方案是删除重复项:

    $foo = new TwigExtraBundle();
    

    【讨论】:

    • Twig\Extra\TwigExtraBundle\TwigExtraBundle::class 是 OP 正在使用的行,它不包含任何不需要的重复内容
    • 我的意思是代码中的其他地方,而不是bundles.php
    • 为什么代码的任何其他部分会导致该错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多