曾经我对于composer的原理等没有深入了解,只是知道简单的使用,现在深入研究了一下,在此记录一下,深入了解才能了如指掌。

  1. composer的作用
  2. composer命令介绍之install和update及其区别
  3. composer版本号
  4. composer自动加载原理源码分析
  5. Composer 升级到 2.0 版本,有哪些功能是你必知的?
  6. Composer 卸载与升级与降级

以上几篇文章,深入的讲解了compser的作用原理使用等,需要的小伙伴自行查看阅读哈,还有官方使用手册哦,在 基本用法 | Composer 中文文档 | Composer 中文网

下面讲解一下,程序员经常使用的部分。


composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

然而,对于如何『安装他们』,新手可能并不清楚。网上的答案有的说 composer install,有的说composer update,而这两者似乎都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢?

首先要搞清楚的一件事情是,所有的依赖都定义在composer.json,手册中给出了一些基本用法和例子。你可能已经注意到,在指定版本号的时候,我们并不一定要指明一个精确的版本。

那么就有可能发生这么一个情况,对于同一份composer.json,我们在不同时刻拉取到的依赖文件可能不同(因为composer会在满足条件的情况下去拉取最新的那份依赖),从而导致一些异常情况。

composer updatecomposer install正是为了解决这个问题而出现的。

1、当你执行composer update的时候,composer会去读取composer.json中指定的依赖,去分析他们,并且去拉取符合条件最新版本的依赖。

然后他会把所拉取到的依赖放入vendor目录下,并且把所有拉取的依赖的精确版本号写入composer.lock文件中。

2、composer install所执行的事情非常类似,只在第一步的时候有差别。当你本地如果已经存在一份composer.lock时,

它将会去读取你的composer.lock而非composer.json,并且以此为标准去下载依赖。

当你本地没有composer.lock的时候,它所做的事情和composer update其实并没有区别。

这意味着,只要你本地有一份composer.lock,你就可以保证无论过去了多久,你都能拉到相同的依赖。而如果你把它纳入你的项目的版本控制中,

那么你就可以确保你项目中的每一个人、每一台电脑,

不管什么系统,都能拉取到一模一样的依赖,以减少潜在的依赖对部署的影响。当然,请记得,你应该使用的命令是composer install

那什么时候该使用composer update呢?当你修改了你的依赖关系,不管是新增了依赖,还是修改了依赖的版本,又或者是删除了依赖,

这时候如果你执行composer install的时候,是不会有任何变更的,但你会得到一个警告信息

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.

有人可能会很好奇php是怎么知道我修改了依赖,或者composer.lock已经过期了。很简单,如果你打开composer.lock的话,

会发现其中有一个hash字段,这就是当时对应的那份依赖的哈希值。如果值不一致自然而然就知道发生了变更了。

这时候,你应该去通过composer update来更新下你的依赖了。

如果你不希望影响别的已经安装的依赖,仅仅更新你修改的部分,那你可以通过指定白名单来确定要更新的范围,

例如composer update monolog/monolog仅会更新monolog/monlog这个依赖,别的依赖哪怕有更新也会被忽略。

我们一般使用composer require monolog/monolog 版本号 去下载拓展 或者 composer update monolog/monolog 版本号 去更新拓展。我们一般使用composer install,确实需要使用composer update的话,再使用。

composer的原理和正确使用(最新)相关推荐

  1. composer的原理

    转 Composer的原理 2018年05月14日 14:00:43 do better myself 阅读数 1763 Composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器 ...

  2. 气动调节阀原理如何正确安装

    气动调节阀原理如何正确安装 控制阀一般由电动执行机构或气动执行机构与阀体组成.直行程主要有直单座式和直双座式.后者具有循环容量大.不平衡力小.运行稳定等特点,特别适用于大流量.高压降.泄漏小的场合.角 ...

  3. retrofit原理面试,2021最新百度、头条等公司Android社招面试题目,含答案解析

    基本情况 硕士生,Android开发岗 此文主要是2021年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团,网易等offer 主要包括阿里4面,腾讯8面,字节3面,百度3面,美 ...

  4. 书写php代码能使用的正确形式,最新PHP技术笔试练习题

    最新PHP技术笔试练习题 茂盛的禾苗需要水分;成长的少年需要学习.以下是小编为大家搜索整理的最新PHP技术笔试练习题,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! 一.不定项选择 ...

  5. 计算机专业的会网盘扩容吗,网盘扩容是什么原理?百度云最新扩容技术解析!...

    因为他们的网络磁盘已扩展. 网络磁盘扩展的原理是什么? 原理很简单:我们将大量"鬼文件"(也称为占位符文件)存储到您的磁盘中.这些文件中的每个文件大小均为300G,通常不会占用联机 ...

  6. Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...

  7. 关于微型计算机的原理 叙述正确的是,微型计算机原理练习附答案概念.doc

    复习提纲 1.两个4字节的无符号数分别存放在从2000H和2010H开始的存储单元中,编写程序完成它们的相加操作,并将所求的和放在从2000H开始的内存单元中. 2.设在2000H开始的内存单元中,存 ...

  8. Composer 篇

    学习网站 Composer 中文网 资源包 Packagist Packagist / Composer 中国全量镜像 如何安装 Composer 下载 Composer 安装前请务必确保已经正确安装 ...

  9. composer详解

    一.composer简介 什么是Composer Composer 是 PHP 的一个依赖管理工具,它涉及 "packages" 和 "libraries",简 ...

最新文章

  1. 线段树 + 树形换根 + dfs序 ---- 离线启发式求解 (有点像树上启发式合并答案) F. Nearest Leaf
  2. abaqus分析用户手册单元卷_作用卷、分析卷、材料卷三件套,让你也能熟练应用Abaqus...
  3. ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应...
  4. 南安出台行动方案推进智慧城市建设
  5. sklearn-GridSearchCV调节超参数
  6. SAP BPC系统架构
  7. 编译Linux内核的详细过程
  8. 从流量控制算法谈网络优化-TCP核心原理理解
  9. 【转】HTML - embed 与 object 之争
  10. (转)Django ==== 实战学习篇九 在session中保存购物车
  11. ASP.NET Core和Blazor Code Venture:配置Azure AD身份验证
  12. Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node
  13. 基于Spark机器学习和实时流计算的智能推荐系统
  14. IOMMU简述-上篇
  15. Android开发环境配置
  16. 原来创业也可以这样:80后乞丐网上卖烧烤 500元起家赚了400万
  17. Mysql 复制表结构
  18. The machine learning algorithm cheat sheet
  19. win10 C盘突然少了许多空间解决办法
  20. 密码学系列之:NIST和SHA算法

热门文章

  1. 报Python培训班多少钱?报个班值得吗?
  2. 百度语音合成 java 教程_【百度语音合成】JavaAPI方式语音合成示例
  3. 理光M340W激光打印机加粉清零
  4. 715. Range Module
  5. 第十届全球云计算大会 | 华云数据荣获“2013-2022十周年特别贡献奖”
  6. 如今网络技术日新月异,网络架构师们又如何演变?
  7. 什么是低代码-甲骨文对低代码的定义
  8. 大数据分析必学的六个核心技术点
  9. 盘点2015年可能上市的19家互联网公司,IPO不再是唯一终点
  10. VMware克隆Linux虚拟机