我使用Lumen框架开发了API,并使用了单独创建的composer包,我计划在Lumen(API)和Laravel(Web站点)上使用它们。
但是我得到了:
Class' Author \ Package \ Models \ ProductItem'找不到
本地一切正常(使用相同的Apache和PHP版本)。 我的目录结构是:
|
\_ api (Lumen code)
|
\_ model\
| \_ src\
| | \_ migrations\
| | |
| | \_ models\
| | | \_ ProductItem.php
| | |...
| |
| \_ composer.json
|
\_ www (Laravel code)
在api\composer.json
我有:
...
"autoload": {
"psr-4": {
"App\\": "app/",
"Author\\Package\\": "../model/src"
}
},
...
本地和主机配置之间的区别仅在于Composer的版本(本地为1.5.2,远程为1.4.2)。
答案 0 :(得分:4)
您的命名空间或PSR-4映射不正确。
当您的班级Models
在其名称空间Author\Package\Models\ProductItem
中包含大写字母M时,它应位于./model/src/Models/ProductItem.php
(也是大写字母M)。因此命名空间和文件夹名称必须完全匹配。在Windows / Mac上,这通常不是问题,因为文件系统不区分大小写,但在基于Linux的主机上,这会导致问题。
或者,您可以更改PSR-4自动装载机:
"autoload": {
"psr-4": {
"Author\\Package\\Models\\": "../model/src/models"
}
}
您必须为每个与您的命名空间不匹配的目录执行此操作。