我正在嘗試在我的Symfony2應用程序中集成Agile CRM。symfony2:如何整合不是捆綁的php庫
有雅居樂提供的PHP庫: https://github.com/agilecrm/php-api
但是它不是一個包。
如何正確地將它集成到我的應用程序中?我是否應該在我的app.php或我的內核中放入一個要求?或者,還有更好的方法?
我正在嘗試在我的Symfony2應用程序中集成Agile CRM。symfony2:如何整合不是捆綁的php庫
有雅居樂提供的PHP庫: https://github.com/agilecrm/php-api
但是它不是一個包。
如何正確地將它集成到我的應用程序中?我是否應該在我的app.php或我的內核中放入一個要求?或者,還有更好的方法?
我認爲要做到這一點,最好的辦法是:
composer.json
然後你就可以簡單地使用composer來加載這個包。 :)
作曲家有一個特性,自動加載文件
https://getcomposer.org/doc/04-schema.md#files
{
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}
}
別的辦法嗎?
使用庫中提供的代碼將功能公開爲Service。
作曲(在其他的答案提及)是僅依賴管理,因此僅解決方案的一部分。如果你對最簡潔的方式非常感興趣,那很簡單:你自己編寫包。
事實上,有作爲集成層爲第三方庫工作包的例子很多。例如,查看https://github.com/nelmio/alice,這是一個Symfony2包,用於包裝外部數據設備庫Faker。
一個包可能會聲明配置選項可覆蓋應用程序主配置文件。它可能會暴露庫對象的服務定義,以便您可以避免手動創建它們並在需要時注入它們(無論是否使用DI來編寫庫)。它可能對分枝擴展,事件監聽器等也很有用。
一個很好的書面包可以促進重用,可測試性和關注點的分離。不要害怕從從頭開始編寫你的包,從這裏開始http://symfony.com/doc/current/cookbook/bundles/best_practices.html
所需的庫是「只是」一個功能,在這種情況下無需捆綁。定義函數的文件只需要自動加載。 –
他問是否確實存在更好的方法。那麼......答案是:它的確如此。 –
你應該把它添加到您的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
嗯,它需要首先有自己的composer.json –
因此將它添加到你的composer.json中autoload(我的答案的第二部分) – Robert
由於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文件:) –
肯定你可以做什麼@Vamsi Krishna B的答案,它會工作,但有助於緩解對每個人都更好IMO –