我正在尝试将 Agile CRM 集成到我的 Symfony2 应用程序中。
Agile 提供了一个 PHP 库: https ://github.com/agilecrm/php-api
然而,它不是一个捆绑包。
如何将它正确集成到我的应用程序中?我应该在我的 app.php 或内核中添加一次要求吗?或者,还有更好的方法?
我正在尝试将 Agile CRM 集成到我的 Symfony2 应用程序中。
Agile 提供了一个 PHP 库: https ://github.com/agilecrm/php-api
然而,它不是一个捆绑包。
如何将它正确集成到我的应用程序中?我应该在我的 app.php 或内核中添加一次要求吗?或者,还有更好的方法?
Composer 具有自动加载文件的功能
https://getcomposer.org/doc/04-schema.md#files
{
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}
}
其他方法 ?
使用库中提供的代码将功能公开为服务。
Composer(如其他答案中所述)只是一个依赖管理器,因此只是解决方案的一部分。如果您真的对最干净的方式感兴趣,那很简单:自己编写包。
事实上,有许多作为第三方库集成层的捆绑包示例。例如,查看https://github.com/nelmio/alice,一个 Symfony2 包,用于包装 Faker,一个外部数据夹具库。
包可以声明应用程序主配置文件可覆盖的配置选项。它可能会公开库对象的服务定义,这样您就可以避免手动创建它们并在需要时注入它们(无论库是否在考虑 DI 的情况下编写)。它也可能对 twig 扩展、事件监听器等有用。
一个好的书面包可以促进重用、可测试性和关注点分离。不要害怕从头开始编写你的包,从这里开始http://symfony.com/doc/current/cookbook/bundles/best_practices.html
我认为最好的方法是:
composer.json
然后,您将能够简单地使用 composer 来加载该包。:)
由于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": "git@github.com:agilecrm/php-api.git"
}
]
}
或者您可以将其添加到作曲家自动加载器https://getcomposer.org/doc/01-basic-usage.md#autoloading