Мы хотели бы создать пакет, который может быть использован с помощью композитора/пакета для других пользователей. Он обернет логику, созданную владельцами MessageBird. В основном это своего рода сервис, который действительно будет вызываться с помощью контейнера через ourvendor.messagebird.messaging
.Symfony3 - создание пакета на базе поставщика
Поскольку это тип расслоения (согласно документации по SF3), мы создали пакет во время следующей документации: http://symfony.com/doc/current/bundles/SensioGeneratorBundle/commands/generate_bundle.html
В директории /src
мы использовали /vendor
вместо этого. Вот тогда все пошло не так. Наше пространство имен не может быть расположено, загружено или даже когда мы вручную добавили его в классы автозагрузки Composer, он все равно не удался.
Вопрос в том, что является лучшей практикой для этого? Мы получили его работать прямо сейчас, и то, что мы делали, было следующее:
- Мы создали расслоение остроумие следующий ЦМД:
bin/console generate:bundle --shared --namespace=OurVendor/MessageBird/MessageBirdBundle --bundle-name=MessageBirdBundle --format=yml
- Мы переехали каталог
/src/OurVendor
в/vendor/OurVendor
как единственный способ получить идеальное поколение - использовать папку по умолчанию/src
. - Мы вручную обновили AppKernel.php
- Мы сделали некоторую отладку с пространствами имен для Composer, но в конце концов мы добавили
"OurVendor\\":"vendor/"
в «автозагрузку/PSR-4» директивы в корневой composer.json - Мы бежали
composer dumpautoload && bin/console cache:clear -e dev
, что привело к ошибка. - Мы побежали
composer -o update
, который проверил все зависимости и обновленный соответственно, в том числе и автоматически сгенерированных файлов автозагрузки - Как ни странно, мы должны были добавить Bundle к
AppKernel.php
класса и снова очищаются кэш.
После всего этого это сработало, но в документации не было сказано о разработке пакета сторонних поставщиков. http://symfony.com/doc/current/bundles/best_practices.html
Столь длинная история, не так ли?
, который будет доступен в каталоге поставщика, должен быть размещен и зарегистрирован в [Packagist] (https://packagist.org/). Сделайте пакет в вашем каталоге 'src', поместите его на packagist, тогда вы можете' композитор 'требовать его где угодно. Но имейте в виду, что это будет публично. Это точка поставщика – DevDonkey
Спасибо @DevDonkey!Понял. – ReSpawN