PHP class_exists () не может найти класс, который действительно существует - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь написать плагин CakePHP Authentication и следую и структурирую его после этого репозитория: 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() is:

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"
    }` 

1 Ответ

0 голосов
/ 28 марта 2019

Стандарт автозагрузки PSR-4 требует, чтобы пространство имен соответствовало структуре файла с учетом регистра.Вы определяете свое пространство имен в composer.json с заглавными буквами nates\TotalAuth, но в вашем классе это как nates\totalauth\....

Убедитесь, что все оболочки совпадают, а оболочки соответствуют структуре файла.

...