laravel создает пакет

#php #laravel-5 #composer-php

#php #laravel-5 #композитор-php

Вопрос:

Пытаюсь создать пакет для системы продажи билетов, но у меня, очевидно, есть опечатка или неправильное представление о процессе.

 {
    "name": "pureintellect/tickets",
    "description": "Laravel Ticketing system",
    "license": "MIT",
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.5.9"
    },
    "autoload": {
        "psr-4": {
            "Pureintellect\Tickets\": "src/"

        }
    }
}
  

Это проект Laravel 5.3. Пакет, который я пишу, находится в

 packages/pureintellect/tickets
  

поставщик услуг является

 packages/pureintellect/tickets/src/TicketsServiceProvider.php
  

Ошибка

 [SymfonyComponentDebugExceptionFatalThrowableError]
 Class 'PureintellectTicketsTicketsServiceProvider' not found
  

Я пробовал разные пути, такие как

 "Pureintellect\Tickets\": "src/"
"Pureintellect\Tickets\": "packages/pureintellect/tickets/"
"Pureintellect\Tickets\": "packages/pureintellect/tickets/src"
  

Что я делаю не так? Я уже пробовал composer dump-автозагрузку -o и composer update, как предлагалось в другом сообщении. Я уверен, что это как-то связано с путем к файлу или пространством имен… но, возможно, я просто слишком долго смотрел на это. Как я уверен, мы все знаем, это небольшие ошибки, которые отнимают 90% нашего времени. Спасибо за помощь

Ответ №1:

Если ваш пакет находится в packages/pureintellect/tickets/src , то ваш автозагрузчик должен указывать на это…

 "Pureintellect\Tickets\": "packages/pureintellect/tickets/src/"
  

Комментарии:

1. Ваше имя TicketsServiceProvider размещено как PureintellectTickets ?

2. ДА. Я только что дважды проверил

3. Я не знаю, какую всю отладку вы выполнили. Проверьте vendor/composer/autoload_psr4.php на 'Pureintellect\Tickets` => array($baseDir . '/packages/pureintellect/tickets/src') . Если это существует, попробуйте включить файл и вызвать класс вручную. Что-то должно вести вас в правильном направлении, поскольку эта строка должна заставить этот класс работать, если он правильно распределен по именам и находится в этом каталоге.

Ответ №2:

Извините всех! Я понял это. Оказывается, проблема была в разрешениях. Мне нужно было убедиться, что у группы есть разрешения на выполнение. Как только я исправил это, все начало работать.