Я пытаюсь интегрировать Agile CRM в приложение Symfony2.
Существует библиотека PHP, предоставляемая Agile: https://github.com/agilecrm/php-api
Однако это не пучок.
Как я могу правильно интегрировать его в свое приложение? Должен ли я помещать запрос один раз в мое приложение app.php или мое ядро? Или есть лучший способ?
Composer имеет функцию автоматического загрузки файлов
https://getcomposer.org/doc/04-schema.md#files
{ "autoload": { "files": ["src/MyLibrary/functions.php"] } }
Другие способы?
Предоставляйте функциональность как Сервис, используя код, предоставленный в библиотеке.
Я думаю, что лучший способ сделать это:
composer.json
Затем вы можете просто использовать композитор для загрузки этого пакета. 🙂
Композитор (как упоминается в других ответах) является только менеджером зависимостей и поэтому является лишь частью решения. Если вы действительно интересуетесь самым чистым способом, это довольно просто: напишите сам комплект.
На самом деле, есть много примеров пакетов, которые работают как уровни интеграции для сторонних библиотек. Например, посмотрите на https://github.com/nelmio/alice , пакет Symfony2, предназначенный для переноса Faker, внешней библиотеки данных lib.
Пакет может объявлять параметры конфигурации, переопределяемые основными файлами конфигурации приложения. Он может вызывать определения служб для объектов библиотеки, поэтому вы можете избежать их создания вручную и при необходимости вводить их (независимо от того, написана ли библиотека с учетом DI). Он также может быть полезен для расширений twig, прослушивателей событий и т. Д.
Хороший письменный пакет способствует повторному использованию, тестируемости и разделению интересов. Не бойтесь писать свой пучок с нуля, начинайте здесь http://symfony.com/doc/current/cookbook/bundles/best_practices.html
Вы должны добавить его в свой композитор.json
{ "require": { "agilecrm/php-api": "dev-master" }, "repositories": [ { "type": "vcs", "url": "git@github.com:agilecrm/php-api.git" } ] }
или вы можете добавить его в автозагрузчик композитора https://getcomposer.org/doc/01-basic-usage.md#autoloading
Поскольку agilecrm/php-api
недоступен в Packagist, лучшим подходом было бы добавить репозиторий в ваш файл composer.json, а затем установить пакет так же, как и со всем остальным.
{ //... "repositories": [ { "type": "package", "package": { "name": "agilecrm/php-api", "version": "2.1.0", "source": { "url": "https://github.com/agilecrm/php-api", "type": "git", "reference": "2.1.0" } } } ], "require": { //... "agilecrm/php-api": "2.1.0" } //... }