Composer实现项目的自动加载(Composer管理依赖包)
Composer管理依赖包,实现自动加载
composer通过require、remove命令对项目进行依赖包的添加与删除。
composer通过对项目根目录下的composer.json文件的配置,可以实现PSR-4自动加载的规范。
composer.json架构详解,此处有详细介绍如何配置该文件。
通过对TP5.1的源码进行学习,TP5的自动加载主要是根据composer install命令执行后composer在vendor目录下生产的ClassLoader类进行重写。Composer自动加载机制,是建立命名空间与文件相对于项目根目录路径的映射关系,再通过spl_autoload_register方法注册系统的自动加载,在自动加载 逻辑当中,最核心的是怎么样根据上面生成的路径,查找到相应的文件,并include(包含)进来。
composer自动加载详细流程:
● 配置根目录下的composer.json文件中的autoload的自动加载映射规则。
● 调用composer install/update 命令,生成vendor/composer文件夹以及相关的文件。其中命名空间与文件路径的映射保存在autoload_psr4.php文件中。同时生成ClassLoader.php文件,该文件是自动加载的工具类,通过解析命名空间,查找到相关文件,以便include进来。
● 在入口文件处include vendor文件夹下面的autoload.php文件。若要想更改自动加载相关的官方,自定义一些操作,可以根据composer生成的ClassLoader文件自行编写一个加载器工具类,前提是理解composer的自动加载原理,以及PSR4自动加载规范。具体的可以参考tp5里面的Loader类的实现。