我正在使用 symfony 2.1,我想向供应商添加一个库。packagegist 中不存在该库。我无法用作曲家来管理它。当我通过 Composer 安装捆绑包或其他供应商时,它会为我管理自动加载。但是当供应商不受作曲家管理时,在哪里注册自动加载?
问问题
9373 次
3 回答
16
您可以将不在 packagegist 中的库添加到作曲家。您必须将它们添加到文件的repositories
数组中composer.json
。
以下是如何加载包含 composer.json 文件的 github 存储库,即使它不在 packagist 上(例如,你会为修复存储库所做的一个分叉): http://getcomposer.org/doc/02-libraries 。 md#publishing-to-a-vcs
以下是如何加载 git/svn 存储库或 zip 文件中的库:http: //getcomposer.org/doc/05-repositories.md#types
使用各种可能性的示例:
{
"repositories": [
{
"type": "vcs",
"url": "http://github.com/igorw/monolog"
},
{
"type": "package",
"package": {
"name": "smarty/smarty",
"version": "3.1.7",
"dist": {
"url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
"type": "zip"
},
"source": {
"url": "http://smarty-php.googlecode.com/svn/",
"type": "svn",
"reference": "tags/Smarty_3_1_7/distribution/"
},
"autoload": {
"classmap": [
"libs/"
]
}
}
}
],
"require": {
"monolog/monolog": "dev-bugfix",
"smarty/smarty": "3.1.*"
}
}
于 2012-07-15T22:53:08.040 回答
8
您应该能够使用 Composer 注册无法通过 packagist 获得的供应商库。我不完全确定,但这应该可以正常工作:
{
"autoload": {
"psr-0": {
"Acme": "src/",
"MyVendorLib": "vendor/my-vendor/src",
"AnotherLib": "vendor/another-vendor/lib"
}
}
}
于 2012-07-15T22:46:00.383 回答
3
您只需要修改您的 composer.json 文件以获取自动加载值:
http://getcomposer.org/doc/04-schema.md#autoload
//composer.json 在你的 symfony 2.1 项目中 “自动加载”:{ “psr-0”:{ "": "src/", “你的图书馆”:“src/location/of/lib” } },
然后在您的控制器中,例如:
命名空间 Acme\UserBundle\Controller; 使用 Symfony\Bundle\FrameworkBundle\Controller\Controller; 使用 Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 使用 YourLibrary\FolderName\ClassName; 类 DefaultController 扩展控制器 { /** * @路线(”/”) * @模板() */ 公共函数 indexAction() { $lib = 新的类名(); $lib->getName(); 返回数组('name' => $name); } }
于 2013-02-15T17:37:28.613 回答