所以 - 我的 bootstrap.php 中有一个简单的 PCR0 自动加载器,它应该从 vendors 目录加载任何 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 生成那些自动加载程序文件吗?还是我错过了什么?我认为我不需要它们?
最佳答案
共有三个与自动加载相关的文件,每个都有不同的用途。
- vendor/autoload.php 初始化 composer 的自动加载器。 Composer 提供了一个自动加载器来加载与 Composer 兼容的库。
- vendor/composer/autoload_classmap.php 这个文件被类图自动加载器使用,它用于甚至不兼容 PSR-0 的库,或者生产环境(类图比通过文件系统查找更快)。
- vendor/composer/autoload_namespaces.php 这是composer自带的PSR- 0 auto 加载配置
现在您提到您有自己的 PSR-0 类加载器,您不应该将其用于 composer 依赖项 - 您应该简单地要求/包含 vendor/autoload.php 并让 composer 处理其余部分。
这就是为什么没有选项可以禁用自动加载文件的生成。最后,composer 应该使您能够使用安装的库,并通过提供您需要的所有加载来使您能够。
关于php - 在 composer 中跳过自动加载文件生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13449666/