symfony2:如何集成不是捆绑包的php库
我正在尝试将敏捷CRM集成到我的Symfony2应用程序中 Agile提供了一个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(如其他答案中
如何将其正确集成到应用程序中?我应该在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"
}
//...
}