1

composer autoloader を使用すると、パッケージ間でどのように自動ロードされますか?

例: myPackage 内から monolog クラスを自動ロードする方法は?

/someapp
/someapp/index.php
/someapp/vendor
/someapp/vendor/myPackage
/someapp/vendor/monolog

私のパッケージに /vendor があり、私のパッケージを使用するパッケージに /vendor があり、私のパッケージを使用するそのパッケージを使用するパッケージに /vendor がある場合、/vendor ディレクトリの指数関数的な爆発が見られる可能性があります。

では、サード パーティの依存関係のクロス パッケージをどのように自動ロードするのでしょうか。

4

1 に答える 1

0

composer.jsonパッケージ内で、パッケージrequireが別のパッケージであることを定義するだけで、それだけです。がコンポーザーの依存関係をインストールするときsomeapp、依存関係の依存関係 (依存関係などの再帰的な不条理) はすべて にインストールされsomeapp/vendorます。someapp/index.php次に、 autoload ファイルを含めます。これにより、誰でもインストールされたパッケージからクラスを自動ロードできます。

すなわち:

mypackage/composer.json

"require": {
    "monolog": "*"
}

someapp/composer.json

"require": {
    "mypackage": "*"
}

インストール:

$ composer install

結果:

$ ls someapp/vendor
mypackage     monolog
于 2013-05-30T21:08:38.403 に答える