symfony2: как интегрировать библиотеку php, которая не является пакетом

Я пытаюсь интегрировать Agile CRM в приложение Symfony2.

Существует библиотека PHP, предоставляемая Agile: https://github.com/agilecrm/php-api

Однако это не пучок.

Как я могу правильно интегрировать его в свое приложение? Должен ли я помещать запрос один раз в мое приложение app.php или мое ядро? Или есть лучший способ?

Solutions Collecting From Web of "symfony2: как интегрировать библиотеку 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" } //... }