2

我正在尝试将 Agile CRM 集成到我的 Symfony2 应用程序中。

Agile 提供了一个 PHP 库: https ://github.com/agilecrm/php-api

然而,它不是一个捆绑包。

如何将它正确集成到我的应用程序中?我应该在我的 app.php 或内核中添加一次要求吗?或者,还有更好的方法?

4

5 回答 5

5

Composer 具有自动加载文件的功能

https://getcomposer.org/doc/04-schema.md#files

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

其他方法 ?

使用库中提供的代码将功能公开为服务。

于 2015-07-21T08:40:00.340 回答
2

Composer(如其他答案中所述)只是一个依赖管理器,因此只是解决方案的一部分。如果您真的对最干净的方式感兴趣,那很简单:自己编写包。

事实上,有许多作为第三方库集成层的捆绑包示例。例如,查看https://github.com/nelmio/alice,一个 Symfony2 包,用于包装 Faker,一个外部数据夹具库。

包可以声明应用程序主配置文件可覆盖的配置选项。它可能会公开库对象的服务定义,这样您就可以避免手动创建它们并在需要时注入它们(无论库是否在考虑 DI 的情况下编写)。它也可能对 twig 扩展、事件监听器等有用。

一个好的书面包可以促进重用、可测试性和关注点分离。不要害怕从头开始编写你的包,从这里开始http://symfony.com/doc/current/cookbook/bundles/best_practices.html

于 2015-07-21T09:34:34.177 回答
2

我认为最好的方法是:

  • 为项目添加一个composer.json
  • 有助于允许从其他地方加载配置,而不是硬编码

然后,您将能够简单地使用 composer 来加载该包。:)

于 2015-07-21T08:33:56.167 回答
1

由于agilecrm/php-apiPackagist上不可用,最好的方法是将存储库添加到您的 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"
    }
//...
}
于 2015-07-22T10:00:15.223 回答
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

于 2015-07-21T09:50:25.050 回答