我使用的symfony 2.1,我想将库添加到供应商。 图书馆不存在于packagist。 我不能与作曲家管理。 当我通过作曲家安装包或其他供应商,它为我管理的自动加载。 但是,当供应商未与作曲家管理到哪里注册自动加载?
Answer 1:
您可以添加不在packagist库作曲家。 您必须在中添加这些repositories
您的阵列composer.json
文件。
以下是如何加载具有composer.json文件GitHub的仓库,即使它不是packagist(例如,你会做修复仓库里的叉): http://getcomposer.org/doc/02-libraries。 MD#发布到一个-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.*"
}
}
Answer 2:
您应该能够使用作曲家通过注册packagist不可供应商库。 我不能完全肯定,但是这应该很好地工作:
{
"autoload": {
"psr-0": {
"Acme": "src/",
"MyVendorLib": "vendor/my-vendor/src",
"AnotherLib": "vendor/another-vendor/lib"
}
}
}
Answer 3:
你只需要修改composer.json文件自动加载值:
http://getcomposer.org/doc/04-schema.md#autoload
//composer.json in your symfony 2.1 project "autoload": { "psr-0": { "": "src/", "YourLibrary": "src/location/of/lib" } },
然后在你的控制器,例如:
namespace Acme\UserBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use YourLibrary\FolderName\ClassName; class DefaultController extends Controller { /** * @Route("/") * @Template() */ public function indexAction() { $lib = new ClassName(); $lib->getName(); return array('name' => $name); } }
文章来源: Where to register autoload when the vendor is not managed with composer in Symfony 2.1?