Добавление ярлыка в PHP Автозагрузка вызывает конфликт на Laravel - PullRequest
0 голосов
/ 02 февраля 2020

Я хотел бы спросить вас, почему я получаю ошибку конфликта после добавления этого к composer. json:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Models\\": "app/Models/",
        "Controllers\\": "app/Http/Controllers/"
    },
    ...
}

и пространству имен внутри всего, например, "app \ Models \ People \ Admin. php " be

namespace Models\People;

Я уже искал эту проблему, но безуспешно, я что-то упустил?

Спасибо!

1 Ответ

0 голосов
/ 03 февраля 2020

Вы получаете эту ошибку, потому что автозагрузчик сначала включает все классы в App\, который также включает в себя все классы в App\Models и App\Controllers, затем снова включает эти классы, что вызывает это конфликт.

Чтобы проиллюстрировать это, вот что происходит:

  1. Автозагрузчик рекурсивно ищет все классы в каталоге app.
  2. Затем курс находит app/Models/People/Admin.php и include s.
  3. После завершения автозагрузки всех классов в app/ он начинает поиск файлов классов в app/Models, находит Admin.php файл класса и include s еще раз.
  4. Ошибка выдается, потому что для PHP вы делаете что-то вроде:
class Admin {}
class Admin {}
...