公告:
  • 要报名培训 PHP 的同学抓紧时间了,黎老师手把手教学,现在报名白菜价了 [2017-08-25]

vendor/composer 下的文件介绍

vendor/composer目录下的文件

autoload_classmap.php

这个文件厉害了,记录了所有类和类的定义文件的映射。

类和定义文件的映射

这样做的好处是,不用每次都运行自动加载的逻辑,实现过自动加载的同学应该知道,每次都要根据类名和命名空间前缀与目录的映射关系来确定类的定义文件所在位置,然后再 require 或者 include这个文件。虽然这种逻辑是很快的,但是再类特别多的情况,消耗再这块的时间会不容忽视,所以,composer 把没一个类和其定义文件都做了一个映射。

这个文件会在每个安装软件包的时候自动更新,开发者无需也不应该手动更新它。

autoload_files.php

供应商要求包含的文件

我们知道 php 只有当类不在,而我们又用了 new 操作符去实例化对象时,会触发自动加载。也就是回调用户提前调用spl_autoload_register()定义的函数。有时候我们会专门再一个php文件里定义一些公共函数,又不能自动加载,那怎么办呢,这时就要叫composer自动包含这写函数的定义文件了。还自得vendor/autoload.php文件吗,这个文件里就做了这些包含逻辑。composer会把autoload_files.php里的文件统统包含进来。

我们会在“发布自己的composer包”一节里讲解怎么声明一个autoload_file,然后在安装我们的软件包的时候,你会发现它也会存在autoload_files.php数组里。

autoload_namespaces.phpautoload_psr4.php

命名空间前缀和文件基目录的映射

这两个文件定义的是供应商声明的命名空间前缀和文件基目录的映射关系数组。实现过PSR-4自动加载的同学会非常熟悉。