私は symfony 2.1 を使用しており、ベンダーにライブラリを追加したいと考えています。ライブラリが packagist に存在しません。composer では管理できません。composer を使用してバンドルまたは他のベンダーをインストールすると、autoload が管理されます。しかし、ベンダーが composer で管理されていない場合、autoload をどこに登録するのでしょうか?
質問する
9373 次
3 に答える
16
packagist にないライブラリを composer に追加できます。repositories
ファイルの配列にそれらを追加する必要がありcomposer.json
ます。
packagist にない場合でも、composer.json ファイルを含む github リポジトリをロードする方法は次のとおりです (たとえば、リポジトリを修正するために行ったフォーク): 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
packagist では利用できないベンダー ライブラリを登録するには、Composer を使用できるはずです。完全にはわかりませんが、これはうまくいくはずです:
{
"autoload": {
"psr-0": {
"Acme": "src/",
"MyVendorLib": "vendor/my-vendor/src",
"AnotherLib": "vendor/another-vendor/lib"
}
}
}
于 2012-07-15T22:46:00.383 に答える
3
autoload 値に合わせて composer.json ファイルを変更するだけです。
http://getcomposer.org/doc/04-schema.md#autoload
//composer.json を symfony 2.1 プロジェクトに "オートロード": { "psr-0": { "": "src/", "YourLibrary": "src/location/of/lib" } }、
そして、たとえばコントローラーで:
名前空間 Acme\UserBundle\Controller; Symfony\Bundle\FrameworkBundle\Controller\Controller を使用します。 Sensio\Bundle\FrameworkExtraBundle\Configuration\Route を使用します。 YourLibrary\FolderName\ClassName を使用します。 class DefaultController extends Controller { /** * @ルート("/") * @テンプレート() */ パブリック関数 indexAction() { $lib = 新しい ClassName(); $lib->getName(); return array('name' => $name); } }
于 2013-02-15T17:37:28.613 に答える