Composer实现项目的自动加载

Posted mo3408

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类的实现。

以上是关于Composer实现项目的自动加载的主要内容,如果未能解决你的问题,请参考以下文章

composer+psr-4实现自动加载

如何为我的项目创建 PSR-4 自动加载器?

Composer 自动加载器在运行测试时找不到 PHPUnit

自定义自动加载与 Composer 的自动加载冲突?

Composer 自动加载始终是第一位的

Laravel 学习笔记之 Composer 自动加载