7

そのため、bootstrap.php に単純な PCR0 オートローダーがあり、ベンダーディレクトリから PCR0 互換ライブラリ クラスをロードする必要があります...

spl_autoload_register( function( $classname ) {
    $path = preg_match( '/\\\\/', $classname )
    ? str_replace( '\\', DIRECTORY_SEPARATOR, $classname )
    : str_replace( '_', DIRECTORY_SEPARATOR, $classname );
    $file = VENDORS_PATH . DIRECTORY_SEPARATOR  . $path . '.php';
    if ( file_exists( $file ) ) {
        require_once( $file );
    }
});

composer が自動読み込みファイルをvendorsディレクトリ (つまり、composerディレクトリとautoload.phpファイル)に生成する理由を理解しているかどうかわかりません。

Composer がこれらのオートローダー ファイルを生成するのを止めることはできますか? または私は何かを逃していますか?必要ないと思いますか?

4

3 に答える 3

4

autoload 関連ファイルは 3 つあり、それぞれ目的が異なります。

  • vendor/autoload.php は、composer のオートローダーを初期化します。Composer は、composer 互換ライブラリをロードできるようにするオートローダーを提供します。
  • vendor/composer/autoload_classmap.php このファイルは、classmap オートローダによって使用されます。これは、PSR-0 との互換性さえないライブラリ、または本番環境用です (classmap は、ファイル システムを介したルックアップよりも高速です)。
  • vendor/composer/autoload_namespaces.php これは、composer に付属する PSR-0 自動ロードの構成です。

独自の PSR-0 クラスローダがあるとおっしゃいましたが、これは composer の依存関係に使用することは想定されていません。単に vendor/autoload.php を require/include し、composer に残りを処理させることになっています。

これが、オートローディング ファイルの生成を無効にするオプションがない理由です。最後に、composer は、インストールされたライブラリを使用できるようにすることを想定しており、必要なすべての読み込みを提供することでそれを可能にします。

于 2012-11-19T08:33:36.007 に答える
1

残念ながら、Composer がこの機能をサポートするようには思えません: https://github.com/composer/composer/issues/1663

于 2013-07-09T01:04:29.830 に答える
-1

私が取り組んでいるプロジェクトには正常に動作するオートローダーがあるため、個人的にはこれらのファイルを .gitignore に追加しました

于 2015-06-11T05:34:00.910 に答える