Я разрабатываю пакет Laravel, но у меня проблема с автозагрузкой композитора.
В моем пакете 2 папки в папке src
. Один из них называется Laravel
, а другой - Telegram
. Вот структура пакета:
./packages
.../typhoon
...../src
......./Laravel
........./Providers
............LumenServiceProvider.php
............LaravelServiceProvider.php
......./Telegram
..........Api.php
.....composer.json
Этот пакет разработан под SaliBhdr/Typhoon
пространством имен.
Я добавил каталог packages/typhoon/src
в файл композитора Laravel следующим образом:
"autoload": {
"psr-4": {
"App\\": "app/",
"SaliBhdr\\Typhoon\\" : "packages/typhoon/src/"
}
},
И добавьте адрес src/
в файл пакета composer.json следующим образом:
"autoload": {
"psr-4": {
"SaliBhdr\\Typhoon\\": "src/"
}
},
Вот тут начинается странное поведение. Когда я выполняю команду php artisan serve
, Laravel выдает ошибку, которая говорит:
Class 'Salibhdr\Typhoon\Laravel\Providers\LumenServiceProvider' not found
И если я проверю, существует ли класс с функцией class_exists('Salibhdr\Typhoon\Laravel\Providers\LumenServiceProvider')
, он возвращает false
. Но если я проверю, существует ли Salibhdr\Typhoon\Telegram\Api
, он вернет true
.
Я проверил файл autoload_classmap
и заметил, что композитор включает все классы в подпапке Telegram
, но не в подпапке Laravel
.
Почему композитор ведет себя так странно? почему он включает одну подпапку, а не другую? Это то, чем я занимаюсь каждый день, и никогда не видел ничего подобного.
Мне отчаянно нужна помощь. Любая помощь будет оценена