要避免采composer坑, 我们首先要知道composer是什么,是干什么用的,本文主要分以下几个部分
- 自动加载与composer
- composer.json VS composer.lock
- composer install VS composer update
- composer VS git
为什么要自动加载?
换句话说就是,如果不自动加载一直用include/require来包含类库文件会引起什么问题:
- 目录名和文件名变化引起程序不稳定的问题
- 造成遗漏 或者 包含进不必要的类文件
- 相对路径的性能问题
- 类库文件间相互依赖的问题
尽管PHP有autoload和spl_autoload也不能很好的解决这些问题,后来composer就出现了为我们解决了这些问题:
Composer 将这样为你解决问题:
a) 你有一个项目依赖于若干个库。
b) 其中一些库依赖于其他库。
c) 你声明所依赖的东西。
d) Composer 会找出哪个版本的包需要安装,并安装它们。
composer加载核心思想:通过composer的配置文件在引用入口文件(autoload.php)时,将类和路径的对应关系加载到内存中,最后将具体加载的实现注册到spl_autoload_register函数中.最后将需要的文件包含进来。
Composer 不是一个包管理器。它涉及 “packages” 和 “libraries”,它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。就是这个依赖管理