ErrorException (E_ERROR) Класс 'app \ MyLib \ MyClass' не найден - Подобный класс работает нормально - PullRequest
0 голосов
/ 17 января 2019

Я создаю веб-приложение. Я относительно новичок в Laravel и все еще учусь. В любом случае, вот моя проблема:

Я пытаюсь включить пользовательский класс в свой проект. Мне удалось включить один класс - Администратор, и попытался сделать то же самое с другим - Профессором, но, несмотря на то, что первый работает нормально, другой - нет.

  1. Я создал файлы в папке своего приложения, подпапке Библиотеки, с именами Администратор и Профессор.

  2. Внутри каждого файла я положил:

    namespace app\Biblioteka;
    
  3. Внутри composer.json я сделал следующие изменения:

    "autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "classmap": [
        "database/seeds",
        "database/factories",
        "app/Biblioteka/Administrator",
        "app/Biblioteka/Profesor"
    ],
    "files": ["app/Biblioteka/Administrator.php",
              "app/Biblioteka/Profesor.php"]
    

    },

  4. После этого я запускаю:

    php artisan route:clear
    php artisan cashe:clear
    composer dump-autoload
    

и получил следующее сообщение:

    [RuntimeException]
    Could not scan for classes inside "app/Biblioteka/Administrator"
    which does not appear to be a file nor a folder
    dump-autoload [--no-scripts][-o|--optimize][-a|--classmap-
    authoritative][--apcu][--no-dev]
  1. Я включил:

    use app\Biblioteka\Administrator;
    use app\Biblioteka\Profesor;
    

в файлах с использованием указанных классов.

Приложение работает для класса Administrator, но не для класса Profesor.

Class Administrator был создан первым. После того, как все заработало, я сделал класс Profesor так же, как и с Administrator. Он сообщает об ошибке в строке, где вызывается конструктор для класса. Я не могу понять, почему второй класс не работает должным образом.

Спасибо всем, кто может помочь мне разобраться с этим :)

1 Ответ

0 голосов
/ 17 января 2019

Нет необходимости добавлять в блоки classmap и files, если вы помещаете свои пользовательские классы в каталог app. Удалите эти строки, затем просто используйте App/Biblioteka/Administrator; в ваших PHP-файлах.

Этот бит:

"psr-4": {
    "App\\": "app/"
},

означает, что на что-либо в каталоге app можно ссылаться через пространство имен App. Таким образом, для app/Foo/Bar.php на класс ссылаются как App\Foo\Bar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...