如何在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规则发现:只要在搜索关键字是用嫁接的,查询的关键在解析后…

Apache专用笔记贴

有关apache的一些知识点(例如配置,参数设置等)每每有什么问题都要到google,baidu半天. 其实这些问题自己以前也碰到过很多回,结果就浪费了大量的时候在每次的网上搜索答案上, 而且每次通过搜索得到的答案都不尽相同,有几乎是最优答案的,也有勉强可用的,想再找到以前 认为写的很…

Lodash 中文文档 (v3.10.1) - “Number” 方法

Lodash 中文文档 (v3.10.1) - “Number” 方法 Translated by PeckZegOriginal Docs: Lodash v3.10.1 Docs“Number” 方法 _.inRange(n, [start0], end) 检查 n 是否位于 start 和 end 之间(包含 start,但不包含 end)。如果未指定 end&#…

给定某年日期及该年第一天是星期几然后显示该年的日历

package lyt; import javax.swing.*; public class Lyt5 { public static void main(String[] args) { // TODO Auto-generated method stub String yearJOptionPane.showInputDialog(null,"请输入年份:","梁燕婷",JOptionPane.QUESTION_MESSAGE); Stri…

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

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

php中的point用法,php strnatcmp()函数的用法总结

这篇文章主要是对php中strnatcmp()函数的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助Definition and Usage定义和用法The strnatcmp() function compares two strings using a "natural" algorithm.strnatcmp()函数…

利用7z来分卷压缩文件

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

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

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

python生成日历_使用Python实现简易月历生成(2)

生成日历主程序的函数结构和注释:#此功能用于在place处追加字体为f_name,字号为f_size,内容为content的细/粗体字 def convert_text(place, f_name, f_size, content, f_bold): #此功能用于输出以date为首的四周月历,以及判断是否跨年并改年份 def get_month_info(d…

在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的同学都面临…

八皇后问题

此处为非递归版本 #include <cmath> #include <iostream> #include <vector> #include <algorithm> using namespace std; const int MAX 8; vector<int> board(MAX); void show_result() { for(size_t i 0; i < board.size(); i) cout<…

Mysql数据库加锁与解锁(转)

转自&#xff1a;http://www.pai7.cn/article.asp?id359SQL语句&#xff1a;LOCK TABLES tablename WRITE;LOCK TABLES tablename READ;Insert INTO assignment VALUES (1,7513,0000-00-00,5),(1,7513,2003-01-20,8.5);UNLOCK TABLES;对于多个用户同时提交表单&#xff0c;并且…

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

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

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

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

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

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

robotframework调用python类方法_RobotFramework-调用.py文件

ubuntu 13&period;10 monodevelop3 安装 版本 ubuntu 13.10 桌面模式默认:unity :文件管理器:nautilus iOS - UIAlertView 前言 NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a p ... PHP常用代码&#xff1a; 1.$arra…

PHP分页完美参考

转自http://www.knowsky.com/3187.html 1、前言 分页显示是一种非常常见的浏览和显示大量数据 的方法&#xff0c;属于web编程中最常处理的事件之一。对于web编程的老手来说&#xff0c;编写这种代码实在是和呼吸一样自然&#xff0c;但是对于初学者来说&#xff0c;常常对这个…