如何在vsc上下载php扩展包,正确的 Composer 扩展包安装方法

问题说明

我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的:

d5d11087283a06fe94b180176f8442a4.png

composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害。

因为 composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是 所有扩展包,举个例子,你在项目一开始的时候使用了 monolog,当时的配置信息是

"monolog/monolog": "1.*",

安装的是 monolog 1.1 版本,而一个多月以后的现在,monolog 已经是 1.2 了,运行命令后直接更新到 1.2,这时项目并没有针对 1.2 进行过测试,项目一下子变得很不稳定,情况有时候会比这个更糟糕,尤其是在一个庞大的项目中,你没有对项目写完整覆盖测试的情况,什么东西坏掉了你都不知道。

那应该使用哪个命令呢?install, update 还是 require ?

c50575094474bf90367e95e63a238ae5.png

接下来我们一一解释。

简单解释

composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;

composer update - 从 composer.json 安装最新扩展包和依赖;

composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新;

composer require new/package - 添加安装 new/package, 可以指定版本,如: composer require new/package ~2.5.

流程

接下来介绍几个日常生产的流程,来方便加深大家的理解。

流程一:新项目流程

创建 composer.json,并添加依赖到的扩展包;

运行 composer install,安装扩展包并生成 composer.lock;

提交 composer.lock 到代码版本控制器中,如:git;

流程二:项目协作者安装现有项目

克隆项目后,根目录下直接运行 composer install 从 composer.lock 中安装 指定版本 的扩展包以及其依赖;

此流程适用于生产环境代码的部署。

流程三:为项目添加新扩展包

使用 composer require vendor/package 添加扩展包;

提交更新后的 composer.json 和 composer.lock 到代码版本控制器中,如:git;

关于 composer.lock 文件

composer.lock 文件里保存着对每一个代码依赖的版本记录(见下图),提交到版本控制器中,并配合 composer install 使用,保证了团队所有协作者开发环境、线上生产环境中运行的代码版本的一致性。

57086467d196dbfd51d7d787ea599e9c.png

关于扩展包的安装方法

那么,准备添加一个扩展包,install, update, require 三个命令都可以用来安装扩展包,选择哪一个才是正确的呢?

答案是:使用 composer require 命令

另外,在手动修改 composer.json 添加扩展包后,composer update new/package 进行指定扩展包更新的方式,也可以正确的安装,不过不建议使用这种方法,因为,一旦你忘记敲定后面的扩展包名,就会进入万劫不复的状态,别给自己留坑呀。

上面的概念不论对新手或者老手来说,都比较混淆,主要记住这个概念:

原有项目新添加扩展的,都使用 composer require new/package 这种方式来安装。

需要加版本的话:

composer require "foo/bar:1.0.0"

更新指定扩展到指定版本

有时候你之前使用过的扩展包,加入了新功能,你想更新单独这个扩展包到指定版本,也可以使用 require 来操作。

如下面例子,需要更新 "sami/sami": "3.0." 到 "sami/sami": "3.2."

5b3912d4d6a19b21982085dd90ce1117.png

命令行运行:

415e462cf3d041eb17f4d1c56825af0a.png

composer.json 已经被自动更新:

7707262788506f3f5af895e5b48b19db.png

完。

摈弃世俗浮躁,追求技术精湛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python之33个关键字详解_Python解析、提取url关键字的实例详解

解析url用的类库: python2版本: from urlparse import urlparse import urllib python3版本: from urllib.parse import urlparse import urllib.request 研究了不同的url规则发现:只要在搜索关键字是用嫁接的,查询的关键在解析后…

当退出python时是否释放全部内存_python如何释放内存

关于Python中的内存释放问题 首先就不得不提到Python解释器在何种情况下会释放变量的内存。Python引用了内存计数这一简单的计数来控制。 python学习网,大量的免费python视频教程,欢迎在线学习! 下面是引用计数的知识: 1) 增加引用…

利用7z来分卷压缩文件

最近做一个发送Email的小工具,里面有个附件的功能, 如果附件太大了,一般都是用winara 分卷压缩的,然后在上传。 如何用程序来实现自动的分卷压缩的呢?因为RAR不是免费的,就上网找了7z 安装好7z,把7z.dll拷贝到程式的目…

LoadRunner 12.02 安装教程及中文语言包安装

注意事项: 安装前,把所有的杀毒软件和防火墙关闭。 若以前安装过LoadRunner,则将其卸载。 安装路径不要带中文字符。 LoadRunner 12已经不再支持xp系统,仅支持win7和win8系统。 一、下载 首先可以在惠普官网下载Loadrunner12安装包。我的Load…

在WPF的TreeView中实现右键选定

在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem中实现右键菜单时,往往希望在弹出菜单的同时选中该节点,以使得菜单针对选中的节点生…

JavaScript 音频处理库 pico.js

pico.js 实现了实时音频处理的简单 JavaScript 接口。 示例代码: 转载于:https://www.cnblogs.com/shihao/archive/2012/12/08/2809084.html

[转载]项目风险管理七种武器-霸王枪

“小帅,老大对你的项目很关注,听说又拍了新需求?”度教授说道。 “对,不过我已经用离别钩处理了。” “那可能不够,你的项目已经到后期,现在进行需求变更,可能引入巨大的质量风险,这…

python编程入门第一课_python入门前的第一课 python怎样入门

人工智能时代的到来,很多文章说这么一句:“不会python,就不要说自己是程序员”,这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必备技能。很多初学Python的同学都面临…

破站www.2637.cn居然敢截持偶的IE!

网上也有很多人中招了,连主页都被改了做http://www.2637.cn/?gba,杀毒后哪个网址还在哪强占做主页!重装IE也试过但还是换不到主页!可谓是比较顽固的。 偶痛恨的同时,也对其原理有了一些兴趣。这个死东西还不可以被360…

php熊掌号怎么设置json-ld,dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据

dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据?百度推出的百度熊掌号非常的不错,我的dedecms织梦系统早早就对接好了,它能对你的原创文章进行原创保护,并评出熊掌号搜索指数,熊掌号搜索指数是对你文章的内容质量,用户喜爱、原创能力、活跃表现、领域专注五个…

Java并发编程:volatile关键字解析

2019独角兽企业重金招聘Python工程师标准>>> volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键…

php 掌握jquery,完全掌握jquery tmpl模板

之前用模板渲染都是用angular,无意间发现了jquery tmpl这种轻量级,其文档在这里,本文主要为大家带来一篇jquery tmpl模板(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧&am…

uniaccess进程无法结束 拒绝访问_嵌入式Linux编程——程序员小白不懂的进程、信号量、并发、互斥...

所有学嵌入式Linux系统的看过来了,以下内容是每一位想学习Linux嵌入式系统想要了解的内容,真的很想要分享给大家!本文分享的内容主要如下几个方面:3.1 并发的原理3.1.1 一个简单的例子3.1.2 竞争条件3.1.3 操作系统关注的问题3.1.…

我常用的在线取色器

颜色明淡 http://www.colorschemer.com/online.html 2.http://tool.cc/color/ 转载于:https://www.cnblogs.com/xiaoliu66007/p/5145955.html

python支持向量机回归_Python中支持向量机SVM的使用方法详解

除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类。因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm。 一、导入sklearn算法包 Scikit-Learn库已经实现了所有基本机器学习的算法,具体使用…

linux awk命令详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处…

解决了界面上菜单项跑到其它AE控件后面的问题(java)

菜单项竟然跑到后面去了,搞了好多天,终于解决了 只要把这句代码放到main()的最前面就可以了 JPopupMenu.setDefaultLightWeightPopupEnabled(false); 转载于:https://www.cnblogs.com/bluemaplestudio/archive/2010/02/28/1675171.html

matlab利用霍夫,基于matlab的霍夫变换

霍夫变换(限量版)基于matlab的霍夫变换 一、简单介绍Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问…

python网站用什么数据库_PyMySQL数据库的使用

前面我们学习了SQLite数据库的相关内容,我们也通过前面的内容学习到了数据库的相关操作,PyMySQL数据库的操作和前面的内容类似,但我们可以通过Navicat直接来查看数据库中的内容,实现数据可视化,前面我们已经完成了下载…

宏与内联(inline)的区别(转载)

先转载下人家总结的宏和普通函数调用的区别:(1)、宏只做简单的字符串替换,函数是参数传递,所以必然有参数类型检查(支持各种类型,而不是只有字符串)。(2)、宏不经计算而直接替换参数,函数调用则是将参数表达式求值再传…