当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?
Posted
技术标签:
【中文标题】当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?【英文标题】:Where to register autoload when the vendor is not managed with composer in Symfony 2.1? 【发布时间】:2012-07-14 19:48:28 【问题描述】:我正在使用 symfony 2.1,我想向供应商添加一个库。 packagegist 中不存在该库。我无法用作曲家来管理它。当我通过 composer 安装包或其他供应商时,它会为我管理自动加载。但是当供应商不使用composer管理时,在哪里注册自动加载呢?
【问题讨论】:
您是否正在调查 Satis? github.com/composer/satis 和 getcomposer.org/doc/articles/… 【参考方案1】:你只需要修改你的 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);【讨论】:
我认为.php
无法结束use
语句的行?【参考方案2】:
您可以将不在 packagist 中的库添加到作曲家。
您必须将它们添加到您的 composer.json
文件的 repositories
数组中。
这里介绍了如何加载包含 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.*"
【讨论】:
【参考方案3】:您应该能够使用 Composer 注册无法通过 packagist 获得的供应商库。我不完全确定,但这应该可以正常工作:
"autoload":
"psr-0":
"Acme": "src/",
"MyVendorLib": "vendor/my-vendor/src",
"AnotherLib": "vendor/another-vendor/lib"
【讨论】:
以上是关于当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?的主要内容,如果未能解决你的问题,请参考以下文章
在Composer更新后找不到Symfony AbstractController