Я пытаюсь интегрировать 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
Тогда вы сможете просто использовать composer для загрузки этого пакета. 🙂
Composer (как уже упоминалось в других ответах) — это только менеджер зависимостей и, следовательно, только часть решения. Если вы действительно заинтересованы в самом чистом способе, это довольно просто: напишите пакет самостоятельно.
Фактически, есть много примеров пакетов, которые работают в качестве уровней интеграции для сторонних библиотек. Например, посмотрите на https://github.com/nelmio/alice, пакет Symfony2, предназначенный для обёртывания Faker, библиотеки внешних данных.
Пакет может объявить параметры конфигурации, которые могут быть переопределены основными файлами конфигурации приложения. Он может предоставлять определения сервисов для объектов библиотеки, чтобы вы могли избежать их создания вручную и внедрять их при необходимости (независимо от того, написана ли библиотека с учетом DI). Это также может быть полезно для расширений веток, слушателей событий и так далее.
Хороший письменный пакет способствует повторному использованию, тестированию и разделению задач. Не бойтесь писать свой пакет с нуля, начните здесь http://symfony.com/doc/current/cookbook/bundles/best_practices.html
Как 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"}
//...
}
Вы должны добавить его в свой composer.json
{
"require": {
"agilecrm/php-api": "dev-master"},
"repositories": [
{
"type": "vcs",
"url": "[email protected]:agilecrm/php-api.git"}
]
}
или вы можете добавить его в автозагрузчик композитора https://getcomposer.org/doc/01-basic-usage.md#autoloading