在作曲家中跳过自动加载文件生成?

时间:2012-11-19 07:55:51

标签: php composer-php

所以 - 我的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会在 vendor 目录中生成自动加载文件(即 composer 目录和 autoload.php 文件)?

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

3 个答案:

答案 0 :(得分:4)

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

  • vendor / autoload.php初始化composer的自动加载器。 Composer提供了一个自动加载器,可以加载与composer兼容的库。
  • vendor / composer / autoload_classmap.php这个文件由classmap autoloader使用,这适用于甚至不兼容PSR-0的库或生产环境(classmap比通过文件系统查找更快)。 / LI>
  • vendor / composer / autoload_namespaces.php这是作曲家自带的PSR-0自动加载的配置

现在你提到你有自己的PSR-0类加载器,你不应该将它用于作曲家依赖 - 你应该只需要/包括vendor / autoload.php并让作曲家处理剩下的事情。

这就是为什么没有选项来禁用自动加载文件的生成。最后,composer应该允许你使用安装的库,并通过提供你需要的所有加载来实现。

答案 1 :(得分:0)

不幸的是,听起来像Composer不支持此功能:https://github.com/composer/composer/issues/1663

答案 2 :(得分:0)

我个人将这些文件添加到.gitignore,因为我正在处理的项目有一个工作正常的自动加载器

相关问题