php - 在 composer 中跳过自动加载文件生成?

标签 php composer-php

所以 - 我的 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/

相关文章:

php - Laravel Nova 自定义字段类未找到错误

symfony - 当通过 Composer 包含时如何在 AdminLTE 中使用 jQuery 的输入掩码

php - 从MySql表数据结果中转义<>符号

javascript - 在 Click 事件上获取从 PHP 传递到 JS 的变量,返回所有元素变量,而不仅仅是被单击的变量

composer-php - Composer : how to install `dev` packages in Symfony 2. 3?

amazon-web-services - 云信息 Composer 安装

php - Composer laravel 创建项目

php - Xampp中Mysql路径错误

php - PHP for iOS 中的 JSON 编码多重查询返回

java - PHP POST 变量在 Java 发送时不等价