我使用的是symfony 2.1,我想为供应商添加一个库。该库在包装学家中不存在。我不能和作曲家一起演奏。当我通过composer安装捆绑包或其他供应商时,它会为我管理自动加载。但当供应商不使用composer管理时,在哪里注册自动加载?
您可以向composer添加不在packagist中的库。您必须将它们添加到composer.json
文件的repositories
数组中。
以下是如何加载一个包含composer.json文件的github存储库,即使它不在packagegist上(例如,修复存储库的fork):http://getcomposer.org/doc/02-libraries.md#publishing-对空
以下是如何加载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.*"
}
}
您应该能够使用Composer来注册不能通过packagist获得的供应商库。我不完全确定,但这应该很好:
{
"autoload": {
"psr-0": {
"Acme": "src/",
"MyVendorLib": "vendor/my-vendor/src",
"AnotherLib": "vendor/another-vendor/lib"
}
}
}
您只需要为自动加载值修改composer.json文件:
http://getcomposer.org/doc/04-schema.md#autoload
//symfony 2.1项目中的composer.json"自动加载":{"psr-0":{":"src/","YourLibrary":"src/location/of/lib"}},
然后在你的控制器中,例如:
命名空间Acme\UserBundle\Controller;使用Symfony\Bundle\FrameworkBundle\Controller\Controller;使用Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;使用YourLibrary\FolderName\ClassName;类DefaultController扩展控制器{/***@路线("/")*@Template()*/公共函数indexAction(){$lib=新类名();$lib->getName();return数组('name'=>$name);}}