4

我想用 SF4 创建一个新的可重用包。我遵循了文档,但如果我在“src”目录中添加我的新包,则会与 App 命名空间和作曲家自动加载发生冲突:

"autoload": {
    "psr-4": {
        "App\\": "src/",
        "Acme\\TestBundle\\": "src/Acme/TestBundle/"
    }
},

然后,我收到此错误:

PHP 致命错误:未捕获的 Symfony\Component\Debug\Exception\ClassNotFoundException:试图从命名空间“Acme\TestBundle”加载类“AcmeTestBundle”。

我认为这是因为 PSR-4 自动加载器使用错误的命名空间 (App/Acme/TestBundle/AcmeTestBundle.php) 加载了文件。

有没有办法解决这个问题?我也尝试为我的应用程序创建另一个包,但由于 Kernel.php 文件而崩溃...

此后备目录方法也不起作用:

"psr-4": {
    "": "src/"
}
4

1 回答 1

0

为了帮助 PSR-4 Autoloader 将 Acme 作为一个包加载,您必须从 App services 目录中排除他的目录:

文件:config/services.yaml

services:
        ...
        App\:
        resource: '../src/*'
        # you can exclude directories or files
        # but if a service is unused, it's removed anyway
        **exclude: '../src/{Entity,Migrations,Repository,Acme}'**
于 2018-04-22T05:38:24.403 回答