如何使 Composer/PSR-4 在子文件夹中接受我的第二个命名空间?
How to make Composer/PSR-4 make accepting my second namespace in a subfolder?
给出的是一个使用 PSR-4 自动加载的 Symfony 4.4 应用程序(特别是 Sylius):
"autoload": {
"psr-4": {
"App\": "src/",
"KYCBundle\": "src/KYCBundle/"
}
},
到目前为止,将所有控制器和实体等放在 src
目录下效果很好:
+ src
- Controllers
- Entities
对应的命名空间如:
namespace App\Controller\Admin;
但是对于第二个命名空间 KYCBundle
这不起作用。
+ src
+ KYCBundle
- Controllers
- Command
- Entities
当我想将 类 与以下命名空间声明一起使用时:
namespace KYCBundle\Command\AccessTokenCommand
这会报错:
Expected to find class "App\KYCBundle\Command\AccessTokenCommand" in
file " ./src/KYCBundle/Command/AccessTokenCommand.php" while
importing services from resource "../src/*", but it was not
found! Check the namespace prefix used with the resource.
当我将命名空间从 KYCBundle\Command
更改为 App\KYCBundle\Command
时,我认为效果很好。另外,当我删除 PSR-4 配置中的第二行时,事情不会改变,这基本上意味着无论是否使用 KYCBundle
的 PSR-4 配置都不会被使用。
如何让我使用命名空间 KYCBundle
作为没有前缀 App
的根级别?
不要将第二个命名空间中的 类 放在 src
中。避免嵌套名称空间“roots”。
要么将您的第二个命名空间放在 src
之外。例如:
- ./src
- ./KYCBundle
或在 src
中有不同的根:
- ./src/App
- ./src/KYCBundle
从逻辑上讲,修改您的 composer.json
文件以匹配您的目录结构。
给出的是一个使用 PSR-4 自动加载的 Symfony 4.4 应用程序(特别是 Sylius):
"autoload": {
"psr-4": {
"App\": "src/",
"KYCBundle\": "src/KYCBundle/"
}
},
到目前为止,将所有控制器和实体等放在 src
目录下效果很好:
+ src
- Controllers
- Entities
对应的命名空间如:
namespace App\Controller\Admin;
但是对于第二个命名空间 KYCBundle
这不起作用。
+ src
+ KYCBundle
- Controllers
- Command
- Entities
当我想将 类 与以下命名空间声明一起使用时:
namespace KYCBundle\Command\AccessTokenCommand
这会报错:
Expected to find class "App\KYCBundle\Command\AccessTokenCommand" in file " ./src/KYCBundle/Command/AccessTokenCommand.php" while importing services from resource "../src/*", but it was not found! Check the namespace prefix used with the resource.
当我将命名空间从 KYCBundle\Command
更改为 App\KYCBundle\Command
时,我认为效果很好。另外,当我删除 PSR-4 配置中的第二行时,事情不会改变,这基本上意味着无论是否使用 KYCBundle
的 PSR-4 配置都不会被使用。
如何让我使用命名空间 KYCBundle
作为没有前缀 App
的根级别?
不要将第二个命名空间中的 类 放在 src
中。避免嵌套名称空间“roots”。
要么将您的第二个命名空间放在 src
之外。例如:
- ./src
- ./KYCBundle
或在 src
中有不同的根:
- ./src/App
- ./src/KYCBundle
从逻辑上讲,修改您的 composer.json
文件以匹配您的目录结构。