【发布时间】:2019-03-03 13:39:21
【问题描述】:
在 Symfony4 项目中,我想自动加载在 src 文件夹中定义但其命名空间不以 App 开头的类。假设它以 Acme 开头。
我期待composer.json 中的以下配置能够正常工作,但它没有,并且我得到类未找到异常:
"autoload": {
"psr-4": {
"App\\": "src/",
"Acme\\": "src/"
}
},
我在这里错过了什么?
【问题讨论】:
-
你试过运行
composer dump吗? -
是的,我做到了
composer dump-autoload。 -
我以前遇到过这个。出于某种原因,Acme\MyAcme 总是更改为 App\MyAcme。将您的 Acme 类移动到它们自己的目录中,例如 srcAcme 可以。从来不理解这种行为。但人生苦短。
-
你为什么需要这样的逻辑呢? “classmap”是非 PSR 命名的解决方案。标准化命名空间后,您可以切换到 PSR4 自动加载
-
哈。我终于想起了我很久以前想出的东西。问题实际上在于自动连线扫描所有文件并试图从中提供服务。 services.yaml 的 App 部分表示它下面的所有文件都是 App 命名空间的一部分。排除您的 Acme 类或将它们移动到 src 下的不同目录并调整资源部分,一切都会好起来的。
标签: symfony composer-php symfony4 psr-4