Someone made a comment but removed it. He mentioned I was missing \\
at the end of Acme\\models
. Acme\\models\\
will get rid of the message and work as it should.
A non-empty PSR-4 prefix must end with a namespace separator
-
05-10-2022 - |
Question
I'm trying to setup PSR-4 with Composer but I'm just getting A non-empty PSR-4 prefix must end with a namespace separator.
My autoload
in my composer.json
looks like this:
"autoload": {
"psr-4": {
"Acme\\models" : "app/models"
}
},
app/models
is empty.
What am I doing wrong? How can I fix this?
Solution
OTHER TIPS
As others said PSR-4 requires the trailing slash
Though I had to convert /
to \\
in Windows (should work fine on Linux):
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
A non-empty PSR-4 prefix must end with a namespace separator.
namespace separator means \\
- Method-1
Incorrect ⬇️⬇️⬇️
"autoload": {
"psr-4": {
"Acme\\models" : "app/models"
}
},
Correct ⬇️⬇️⬇️
"autoload": {
"psr-4": {
"Acme\\models" : "app/models/"
}
},
- Method-2: If this doesn't work try deleting vendor + composer.lock and reinstall dependencies
- Method-3: Delete the autoload_psr4.php file in the libraries folder - it probably was created before the update and it had issues before.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow