Php Symfony4加载类自定义文件夹时出错“;希望找到类。。。但它没有被找到; 问题

Php Symfony4加载类自定义文件夹时出错“;希望找到类。。。但它没有被找到; 问题,php,symfony,symfony4,Php,Symfony,Symfony4,我正在尝试设置自定义目录结构 对于我的Symfony项目中的一些共享类。我 要在我的根目录中创建自定义文件夹吗 project和我想使用Symfony自动加载 自动从中注册服务的功能 那个文件夹 因此,我将自定义服务名称空间添加到 services.yaml文件: # src ./config/services.yaml services: ... TestNamespace\: resource: '../TestNamespace/*' ... 我在自定义文

我正在尝试设置自定义目录结构 对于我的Symfony项目中的一些共享类。我 要在我的根目录中创建自定义文件夹吗 project和我想使用Symfony自动加载 自动从中注册服务的功能 那个文件夹

因此,我将自定义服务名称空间添加到 services.yaml文件:

# src ./config/services.yaml
services:
    ...

    TestNamespace\:
    resource: '../TestNamespace/*'

  ...
我在自定义文件夹中添加了一个空类:

# src ./TestNamespace/TestClass.php

namespace TestNamespace;

class TestClass
{

}
当我运行应用程序时,出现以下错误:

(1/2) InvalidArgumentException
Expected to find class "TestNamespace\TestClass" in file 
"/path/to/ClassLoadErrorDemo/demo/TestNamespace/TestClass.php"
while importing services from resource 
"../TestNamespace/*", but it was not found! Check the
namespace prefix used with the resource.

(2/2) FileLoaderLoadException
Expected to find class "TestNamespace\TestClass" in file 
"/path/to/ClassLoadErrorDemo/demo/TestNamespace/TestClass.php" while 
importing services from resource "../TestNamespace/*", but it was not 
found! Check the namespace prefix used with the resource in 
/path/to/ClassLoadErrorDemo/demo/config/services.yaml (which is loaded 
in resource "/path/to/ClassLoadErrorDemo/demo/config/services.yaml").
我仔细检查了路径、名称空间和类 多次说出你的名字,一切似乎都很好,我 我不明白为什么我还是会出错。 ./src文件夹中的控制器似乎加载正常。 我做错了什么

复制步骤 我创建了一个演示回购来隔离问题

git clone https://github.com/smoelker/SymfonyClassLoadErrorDemo.git
cd SymfonyClassLoadErrorDemo/demo
composer install
mv TestNamespace/TestClass.php_ TestNamespace/TestClass.php
php bin/console server:start

更新composer.json自动加载设置

{
    [...]
    "autoload": {
        "psr-4": {
            "TestNamespace\\": "TestNamespace/",
            "": "src/"
        }
    },
    [...]
}

运行后:
composer dump autoload
并重试。

composer dump autoload--classmap authoritive
仅在运行命令时存在
src
目录时才起作用


这可能是多阶段Docker构建的一个问题,特别是当您通常只将
composer.json
/
composer.lock
复制到构建映像中时。

TestClass
src
目录中吗?不,它不在源目录中,这正是我想要在这里完成的。我想把这些类放在src文件夹之外。需要调整composer.json的psr4部分,然后运行composer dump autoload
composer dump autoload
这是我的窍门。显然
bin/console服务器:run
不会触发它,必须手动执行。我的问题是没有执行
composer dump autoload
命令。谢谢非常感谢你!我快要发疯了+1.