php - 加载本地 Symfony 包时出现 ClassNotFoundException

标签 php symfony symfony-3.3

我尝试在我的应用程序中安装自定义 Symfony 包。 我使用以下文件夹结构创建了 bundle :

.
├── composer.json
├── composer.lock
└── src
    └── Namespace
        └── CoreBundle
            ├── Controller ...
            ├── CoreBundle.php
            ├── Entity ...
            ├── Helper ...
            ├── Repository ...
            ├── Resources ...
            ├── Services ...
            └── Tests ...

我通过 composer installvendor 文件夹中成功安装了该 bundle 。它位于 vendor/namespace/core-bundle 下作为符号链接(symbolic link)(我在本地加载了它)。

之后,我在 AppKernel.php 中添加了 new Namespace\CoreBundle\CoreBundle(), ,这会产生以下错误:

(1/1) ClassNotFoundException

Attempted to load class "CoreBundle" from namespace "Namespace\CoreBundle".
Did you forget a "use" statement for another namespace?
in AppKernel.php (line 25)

如果符号链接(symbolic link)有任何问题,我尝试在 vendor 文件夹中手动复制该文件夹,但它会产生相同的错误。我通过 dump(ClassMapGenerator::createMap('/path/to/symfony')); 检查了自动加载的类,但我在那里没有找到我的命名空间。是我的配置错误还是我的文件夹结构错误?如果您需要更多代码,我会尽快更新我的问题。

更新:我的包composer.json:

{
  "name": "namespace/core-bundle",
  "license": "proprietary",
  "type": "symfony-bundle",
  "autoload": {
    "psr-4": {
      "Namespace\\CoreBundle\\": "src/Namespace/CoreBundle"
    }
  },
  "require": {
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/orm": "^2.5",
    "liip/imagine-bundle": "1.9.*",
    "php": ">=5.5.9",
    "symfony/symfony": "3.3.*"
  },
  "require-dev": {
  },
  "extra": {
    "branch-alias": {
      "dev-master": "development"
    }
  }
}

最佳答案

每次手动更新 composer.json 中的 autoload 部分后:

{
    "autoload": {
        "psr-4": {
            "Namespace\\CoreBundle\\": "src/Namespace/CoreBundle"
        }
    }
}

不要忘记通过 CLI 刷新生成的 /vendor/autoload.php:

composer dump 
# shortcut for `composer dump-autoload`

关于php - 加载本地 Symfony 包时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46971449/

相关文章:

php - 当我创建一个新的 Symfony 项目时出现 RuntimeException

php - 如何为 Symfony4 项目的 Codeception 提供 Kernel 的命名空间

php - 如何将 jquery var 发送到 php?

javascript - PHP 无法接收使用 jquery 发送的数据。导致 php 文件中 undefined variable

symfony - 使用 FOSUserBundle 与基于 yml 的实体相关

php - Symfony 3 形式 : how to set default value for a textarea widget

Symfony 3.3 将存储库注入(inject)服务

javascript - 如何从外部 php 文件将 javascript 回显到当前 html 页面

php - 将简单的Dockerfile转换为docker-compose

html - 如何删除 Twig 中的空格