Composer 自动加载原理
Composer 自动加载原理 Composer 的自动加载本质是 动态加载类文件,它实现了“按需加载”的机制,避免了手动 require 每个类文件。 一、Composer 自动加载的核心 PHP 提供了 spl_autoload_register() 函数: spl_autoload_register(function ($class) { require 'src/' . str_replace('\\', '/', $class) . '.php'; }); 当你第一次使用一个类时,PHP 会调用这个函数。 $class 是你使用的类全名(包括命名空间)。 函数里通过规则找到对应文件并 require。 Composer 自动加载,就是在这个基础上做了 规范化管理。 二、Composer 生成的自动加载文件 安装依赖后,Composer 会生成: vendor/autoload.php vendor/composer/autoload_*.php vendor/autoload.php:入口文件,只需 require 一次。 vendor/composer/autoload_psr4.php:记录 PSR-4 命名空间 → 文件路径映射。 vendor/composer/autoload_classmap.php:记录 类名 → 文件路径,用于 classmap 加速加载。 vendor/composer/autoload_files.php:记录需要立即加载的文件(如全局函数库)。 vendor/autoload.php 的核心逻辑: require __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInit::getLoader(); ComposerAutoloaderInit::getLoader() 会: 初始化一个 ClassLoader 实例。 根据配置注册 PSR-4、PSR-0、classmap、files 自动加载函数到 PHP。 调用 spl_autoload_register() 注册这些函数。 三、PSR-4 自动加载机制 PSR-4 是 Composer 默认的推荐机制。 假设 composer....