【发布时间】:2019-08-18 16:23:57
【问题描述】:
我正在尝试编写一个 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"
}`
【问题讨论】:
-
composer.json自动加载中有什么内容? -
@ccKep 感谢您查看此内容。我已经用我的 App/composer.json 和我的 Plugin/composer.json 更新了这个问题,因为我不知道你想看哪一个
-
@ccKep 我在玩 ADmad/cakephp-jwt-auth 插件(正确加载的插件),我能够打破它的加载并再次修复它。这导致我发现我的插件(nates/TotalAuth)没有列在 autoload_static.php 文件中,而 ADmad 是。这可能是 PHP 无法识别我的课程的原因吗?我什至应该直接编辑这个 autoload_static.php 文件吗?
-
你应该不直接编辑那个文件,它是由
composer dump-autoload创建的——所以运行那个命令。
标签: php cakephp namespaces autoload