14

私は symfony 2.1 を使用しており、ベンダーにライブラリを追加したいと考えています。ライブラリが packagist に存在しません。composer では管理できません。composer を使用してバンドルまたは他のベンダーをインストールすると、autoload が管理されます。しかし、ベンダーが composer で管理されていない場合、autoload をどこに登録するのでしょうか?

4

3 に答える 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 に答える