Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
symfony2:如何集成不是捆绑包的php库_Php_Symfony_Shared Libraries_Integration_Agile Crm - Fatal编程技术网

symfony2:如何集成不是捆绑包的php库

symfony2:如何集成不是捆绑包的php库,php,symfony,shared-libraries,integration,agile-crm,Php,Symfony,Shared Libraries,Integration,Agile Crm,我正在尝试将敏捷CRM集成到我的Symfony2应用程序中 Agile提供了一个PHP库: 然而,它不是一个捆绑包 如何将其正确集成到应用程序中?我应该在app.php或内核中放置require一次吗?还是有更好的方法?我认为最好的方法是: 为项目添加composer.json 有助于允许从其他地方加载配置,而不是硬编码 然后,您将能够简单地使用composer加载该包。:) Composer具有自动加载文件的功能 其他方式 使用库中提供的代码将功能公开为。Composer(如其他答案中

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

Agile提供了一个PHP库:

然而,它不是一个捆绑包


如何将其正确集成到应用程序中?我应该在app.php或内核中放置require一次吗?还是有更好的方法?

我认为最好的方法是:

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

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

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

其他方式

使用库中提供的代码将功能公开为。Composer(如其他答案中所述)只是依赖项管理器,因此只是解决方案的一部分。如果您真的对最干净的方式感兴趣,那么很简单:自己编写包

事实上,有许多捆绑包作为第三方库的集成层。例如,请看一个Symfony2捆绑包,该捆绑包旨在包装Faker,一个外部数据设备库

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


一个好的编写包可以促进重用、可测试性和关注点分离。不要害怕从头开始编写包,从这里开始

您应该将它添加到composer.json中

{
        "require": {
            "agilecrm/php-api": "dev-master"
        },
        "repositories": [
        {
            "type": "vcs",
            "url":  "git@github.com:agilecrm/php-api.git"
        }
    ]
}

或者,您可以将其添加到composer autoloader中,因为
agilecrm/php api
不可用。最好的方法是将存储库添加到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方面的专家,但我会看看你真的应该学习如何编写一个好的composer.json文件:)当然你可以做@Vamsi Krishna B回答的事情,它会起作用,但有助于减轻每个人的负担,因为请求的库“只是”一个函数,在这种情况下不需要捆绑包。定义函数的文件只需要自动加载。他问是否确实存在更好的方法。好。。。答案是:它有.hmmm,它首先需要有自己的composer.json,所以在autoload中将它添加到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"
    }
//...
}