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 );
    }
});

我不确定我是否理解为什么作曲家会在供应商目录(即作曲家目录和autoload.php文件)中生成自动加载文件?

我可以阻止 Composer 生成这些自动加载文件吗?还是我错过了什么?我觉得我不需要它们?

4

3 回答 3

4

共有三个与自动加载相关的文件,每个文件都有不同的用途。

  • vendor/autoload.php 初始化 composer 的自动加载器。Composer 提供了一个自动加载器来加载 Composer 兼容的库。
  • vendor/composer/autoload_classmap.php 这个文件由类映射自动加载器使用,它用于甚至不兼容 PSR-0 的库或生产环境(类映射比通过文件系统查找更快)。
  • vendor/composer/autoload_namespaces.php 这是composer自带的PSR-0自动加载的配置

现在您提到您有自己的 PSR-0 类加载器,您不应该将其用于作曲家依赖项 - 您只需要求/包含 vendor/autoload.php 并让作曲家处理其余部分。

这就是为什么没有选项可以禁用自动加载文件的生成。最后,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 回答