我试图编写一个CakePHP身份验证插件,并在以下存储库之后对其进行结构化:https://github.com/ADmad/cakephp-jwt-auth
我还处于早期阶段,试图在cakePHPs constructAuthenticate()
方法期间加载我的插件。我将问题的范围缩小到此方法在调用class_exists()
我的项目结构如下:
App/
plugins/
src/
Controller/
AppController.php
Model/
vendor/
Admad/
cakephp-jwt-auth/
src/
Auth/
JwtAuthenticate.php
composer.json
nates/
cakephp-total-auth/
src/
Auth/
TotalAuthenticate.php
composer.json
TotalAuthenticate
是我要加载的类,它在TotalAuthenticate.php
中定义的名称空间是:
namespace nates\TotalAuth\auth;
经过一些调试后,我发现传递到classs_exists()
的路径是:
nates\TotalAuth\Auth\TotalAuthenticate
我已将所有这些信息与Admad/JwtAuth
插件进行了比较,并且所有相对路径都匹配,并且该插件加载得很好,所以我对这里发生的事情以及为什么我的插件获胜感到无所适从不加载。
我在App/composer.json
中的自动加载如下:
`"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Test\\": "tests/",
"Cake\\Test\\": "vendor/cakephp/cakephp/tests/"
}
},`
还有我的插件composer.json
:
`"autoload": {
"psr-4": {
"nates\\TotalAuth\\": "src"
}
},
"autoload-dev": {
"psr-4": {
// "ADmad\\JwtAuth\\Test\\": "tests"
}`
答案 0 :(得分:0)
PSR-4自动加载标准要求名称空间与区分大小写的文件结构匹配。您可以在composer.json
中使用大写字母nates\TotalAuth
定义名称空间,但在类中将其定义为nates\totalauth\...
。
确保所有大小写均匹配且大小写均与文件结构匹配。