🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起学习和进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注


Composer是什么东西?
Composer是PHP的一个依赖管理工具
它允许我们声明项目所依赖的库称为包或组件,然后它会自动为我们下载和管理这些依赖
Composer还提供了自动加载功能,这意味着我们不必手动去包含每个类文件,否则会累死, Composer会为我们处理这一切!
之所以我们目前学习php的时候,要学Composer,究其原因就是因为它解决了PHP项目中常见的依赖管理问题,如版本冲突、库的安装和卸载、以及自动加载等。
Composer的核心作用
可能还有一些新手朋友没有听懂,前面我们提到的依赖管理是什么意思呢?
举个栗子
我这里就说一个最简单的案例吧, 比如说假设你正在开发一个Web应用程序,这个项目依赖于一个名为jQuery的JavaScript库来处理前端的某些动态交互功能, 这种场景就叫做依赖 也是新手都会遇见的一个情况!
那么为了管理这个依赖项,我们就可以做以下几个工作:
声明依赖
在我们实际开发当中,声明依赖就是在项目配置文件中明确列出web项目运行所需的外部库或组件库以及它们的版本信息,以确保这个web项目能够正确地获取和使用这些依赖库
比如对于Node.js项目我们要在package.json中去声明对吧, 对于Java项目我们要在pom.xml中去声明对吧,也就是说要去这些文件中声明对jQuery库的依赖使用, 这些通常都包含库的名称、版本号等信息,万一这些个依赖库的信息官方有更新,那么这时候通常你就需要手动修改项目配置文件来更新依赖的版本, 这操作就可能会变得很麻烦,特别是在大型项目中,依赖库非常多,并且需要经常关注它们的更新和兼容性,绝对烦死你!
并且一个项目如果只是自己一个人开发的话,自己很清楚需要引入什么库,如果有新同事又加入项目一起开发,你告诉他要引入什么库,这时候可能会遇到依赖库版本不一致、存放位置不一样、等等问题
项目如果再继续增加新的开发人员,那么此时项目内部的依赖库需要传播给其它开发成员时,在引入这些依赖库的时候也会重复遇到以上问题!
下载依赖
对于下载一个库文件,其实对于项目来说,没什么,但是实际开发中,尤其大型项目中,依赖库非常多,很多依赖你挨个去下载试试看,不把你累死才怪呢!
所以Composer很好的解决了以上场景出现对的问题,在进行项目开发时只需要在Composer中去声明web项目所需要的依赖库,Composer就会帮助我们找出哪个版本的依赖库,并把它们下载到web项目里面!
使用依赖
在上面的例子中,你可以在你的JavaScript文件中引入jQuery,来使用它的功能,这是很多新手都会做的一部,引入就行了,但是要是使用的库多了你怎么办呢 ?也挨个去引入吗 ? 明显很不现实啊!
管理和维护依赖
实际项目中,随着项目的发展,我们可能需要更新依赖项的版本、解决版本冲突或者处理其他与依赖项相关的问题, 确保项目的依赖项始终处于最佳状态, 这时候如果是你手动去做这些事情,估计你也忙不过来了!
小结
现在你应该搞懂了吧,依赖管理就是我们在开发过程中,对项目所依赖的外部组件、工具库进行有效管理和控制的过程!
这些依赖项可能是第三方库、框架、插件或其他软件组件,它们为项目提供了必要的功能或工具,但同时也带来了管理和协调的复杂性,我们在php中需要Composer来并避免潜在的问题,如版本冲突、不兼容的依赖项或安全漏洞、下载、引入使用等问题!
当然依赖管理器 可不只是Composer, 不同类型,有着不同的依赖管理器
JavaScript就使用npm或yarn作为依赖管理器
Python就使用pip作为依赖管理器
Java使用Maven或Gradle作为构建工具等等…
在PHP中,用于依赖管理的工具是Composer 它称之为流行的PHP依赖管理工具 允许我们声明项目所依赖的库,并自动进行安装、更新和卸载这些依赖!
还有很多工具和服务可以帮助我们实现自动化依赖更新和管理的过程,这里就不过多赘述了!
使用依赖管理器可以配置它们来定期检查依赖项的新版本,并在必要时自动提交更新到项目代码中。
这样我们就不需要手动去修改这些依赖信息,从而简化了依赖管理的工作!
其实你完全可以把这个东西Composer想象成苹果手机里面的那个App Store一样,它就是帮助苹果手机安装工具和软件 以及管理的一个类似于安装包管理器 这样理解了 你就对Composer搞清楚了
有的时候,我们在开发中,很多功能都可以不用去写了,直接使用Composer去帮我们下载和管理就好了
比如图像上传、分页、图形创建、操作数据库等等这些功能都可以通过组件模块的形式让Composer去引入和管理到项目中, 我们都不用去写了,因为网上有很多现成的,所以有人说 有了Composer分分钟你都可以起一个小型项目,其实最最重要的就是这些依赖库是免费的,非常巴适!(重庆话术)🤗🤗
最后一句简单的话总结以下: Composer是PHP的一个依赖包管理工具
它可以帮助我们去下载、安装、声明项目所需的插件库和组件,保证项目依赖的正确性和一致性,而且它帮我们管理的这些依赖库,都是免费的,可以快速帮助我们搭建起来一个项目, 可以说能让你秒变大神 现在懂了吧!😄😄
在win10系统中下载和安装Composer
在实际的开发生产环境下,我们主要是在linux环境下进行配置和安装
但对于刚刚接触的朋友,可以先从window环境下进行配置和安装, 这里我主要也是介绍window环境下的安装
对于在linux环境下的安装和配置我会在后面单独详细说明!
php环境检查
Composer既然是作为一个php依赖管理工具,那么在安装之前,你首先要确认一下自己的php环境是否正确安装,以及版本号是多少, 当然php环境搭建这里我就不过多赘述了,还不清楚的可以去看我以前发布的php环境搭建教程
对于你是手动搭建还是使用集成环境去搭建的php环境都是可以的!
我们可以使用以下代码看到当前的php环境信息
<?php
echo phpinfo();
?>
如图

我这里是手动搭建的PHP7.4.32
注意:PHP版本会对Composer所管理的依赖库版本造成版本控制的影响, 也就是说你是7.4的PHP版本,那么可能你在会用Composer下载依赖库的时候,这些依赖库也会匹配你当前这个PHP版本
当我们使用Composer安装依赖库时,Composer会根据composer.json文件中的配置来确定要安装的库版本,这个文件通常包含了库的版本约束,如最小版本、最大版本或特定版本的依赖库版本约束, 此外,库本身在其composer.json文件中也可能指定了它们所支持的PHP版本范围。
举个栗子
如果某个库在其composer.json中指定它只支持PHP7.4及以上版本,而我们正在使用PHP7.4,那么Composer会尝试安装该库的兼容版本, 但是如我们尝试使用PHP7.3或更低版本,Composer可能会报告版本冲突,因为它找不到与我们的PHP版本兼容的库版本。
因此,在选择PHP版本时,应该考虑项目依赖库的需求,如果不确定某个库是否支持我们的PHP版本,可以查看该库的文档或在其composer.json文件中查找相关信息。同时,确保composer.json文件中的版本约束与我们的PHP版本兼容,以避免潜在的版本冲突问题。
下载Composer
检查好环境之后,我们就可以打开以下地址,进入官网进行下载
官网地址 https://getcomposer.org/
如图

然后点击Download进入到下载页面
因为我们这里是在window环境下进行安装所以我们直接点击 Composer-Setup.exe这个超级链接
如图

安装Composer
下载好之后,就可以直接点击安装,方法跟一般安装软件差不多!
如图

直接点击next下一步即可

到了这一步就要注意了,Composer需要找到我们本地的php.exe解析器的路径, 因为只有这个php解析器才能去驱动Composer执行一些命令!
如图

因为我是手动搭建的php, 并且路径为D:\php7.4.32\php.exe 所以就按照这个路径浏览选择即可
如图

这里直接下一步,暂时不选择代理
如图

点击Install开始安装
如图


到此安装完成,最好重启一下电脑
如图

最后完成安装,是不是很简单!
如图

检查Composer是否安装成功
在Composer安装的时候,会自动把路径映射到环境变量中
如图

所以我们打开cmd输入Composer如果看到以下信息说明你安装成功了!
如图

那么当前我们安装的Composer版本为Composer version 2.7.1 2024-02-09 15:26:28更新的版本
到此我们就可以在Composer中找一个工具或者代码插件来进行管理和使用了!
Composer代码资源是从哪里来的?
有没有想过在你使用Composer的时候,Composer是从什么地方去获取的这些插件、代码库、模块功能等资源的呢
也就是说我们在使用php开发项目的时候,会使用到很多库、插件、功能模块的代码,只要有了Composer我们就可以找到这些代码,直接拿来用!
那么问题来了Composer又是从哪里去找的呢? 答案就是在Packagist上
首先很多开发者会把自己写的代码上传并开源托管到github上, 但是github上的代码类型有很多,而我们主要又是用的php相关的代码模块,于是就又出现了一个叫Packagist的数据源平台
我们从Composer拉下来的代码都是从这个Packagist的地方获取到的,而Packagist又是基于github的一个专门为php开发者建立的代码托管平台,属于一个类似于专门的php应用代码程序商城一样,很多优质的php代码、框架、组件资源都在这里能找到
Packagist的官网: https://packagist.org/
如图

我们要什么功能代码模块直接在这上面搜就可以了
例如我们开发中,一些常见的功能有如下:
| 模块名称 | 描述 | 地址 |
|---|---|---|
intervention/image | 图像处理 | https://packagist.org/packages/intervention/image |
dcat/easy-excel | excel处理 | https://packagist.org/packages/dcat/easy-excel |
guzzlehttp/guzzle | HTTP处理 | https://packagist.org/packages/guzzlehttp/guzzle |
phpmailer/phpmailer | 电子邮件处理 | https://packagist.org/packages/phpmailer/phpmailer |
monolog/monolog | 日志处理 | https://packagist.org/packages/monolog/monolog |
catfan/medoo | 数据库处理 | https://packagist.org/packages/catfan/medoo |
smalot/pdfparser | PDF文件处理 | https://packagist.org/packages/smalot/pdfparser |
这些代码包的使用也是很简单的,只要我们安装了Composer然后根据插件库的名称去下载,并且跟着它给出的文档教程走就可以了,这些插件库在Packagist上都会给出相应的文档教程,很简单!
但是这个网站属于国外的一个镜像网站,有的时候会因为网络原因很卡,所以就有了一些国内的镜像网站来提供Packagist上的资源, 这种国内镜像网站有很多,并且会在一定时间段内会去Packagist官网同步一次数据!
我平常用的是: Packagist/Composer中国全量镜像
地址: https://pkg.xyz/
如图

Composer配置中国镜像的方法
我们知道Composer的资源是来自github再到Packagist, 然而有时候下载代码插件库的时候会很慢就是因为Composer的资源来源于国外
我们其实是可以把Composer的默认获取代码库的资源路径配置修改到国内镜像上,最后的结构如下图:

这样一来我们在使用Composer拉取代码模块的时候,会非常流畅,也不会卡顿了!
这里我以Packagist/Composer中国全量镜像为例
在win10中打开命令行窗口,在运行中输入cmd 并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
如图

配置了之后,我们需要查看是否设置成功, 我们在命令行窗口运行如下代码:
composer config -g -l
如图

注意:这一段代码的意思就是代表Composer镜像已经被设置为了以https://packagist.phpcomposer.com这里为资源获取途径!
[repositories.packagist.org.url] https://packagist.phpcomposer.com
当然如果你觉得这个镜像不满意,可以随时修改, 推荐以下镜像
如下表
| 镜像名 | 地址 | 赞助商 | 更新频率 | 备注 |
|---|---|---|---|---|
| 阿里云 Composer 镜像 | https://mirrors.aliyun.com/composer/ | 阿里云 | 96 秒 | 推荐 |
| 腾讯云 Composer 镜像 | https://mirrors.cloud.tencent.com/composer/ | 腾讯云 | 24 小时 | - |
| PHP 国内 Composer 镜像 | https://packagist.phpcomposer.com | 仁润股份 | 24 小时 | - |
| 华为云 Composer 镜像 | https://repo.huaweicloud.com/repository/php/ | 华为云 | 未知 | - |
| php.cnpkg.org Composer 镜像 | https://php.cnpkg.org | 安畅网络 | 60 秒 | - |
| … | … | … | … |
例如我想修改成阿里云的镜像,那么你可以直接在命令行窗口中去执行以下命令
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如图

然后执行以下命令再次进行查看
composer config -g -l
如图

其他镜像我这里就不去修改了,大家可以自己去尝试一下!
如果要取消进行配置,我们也只需要在cmd命令行窗口中直接执行以下命令:
composer config -g --unset repos.packagist
这样就可以把Composer获取资源的途径修改成默认的packagist平台了!
Composer插件代码工具库的安装与使用
到这一步,Composer安装好了,镜像也配置好了,我们就可以使用Composer给我们的项目中加入代码、插件、库、模块功能了!
之前我们也知道了packagist是Composer的主要资源库,并且在packagist上,基本上每个代码工具包都有相应的安装教程和使用文档!
举例说明
这里我就以smalot/pdfparser工具包为例, 它是一个PDF文件解析器库, 我们可以轻松的来安装这个代码工具包到我们的web项目当中!
下载插件
首先我们可以使用cmd命令行窗口手动打开我们的web项目路径
这里我的路径为: D:\apache 2.4.54\Apache24\htdocs\obj_pdf
如图

然后我们打开smalot/pdfparser的下载地址
https://packagist.org/packages/smalot/pdfparser
里面有一行安装smalot/pdfparser的命令
composer require smalot/pdfparser
如图

把这个命令复制到cmd命令行窗口中回车执行
如图


这时候,Composer就帮助我们把smalot/pdfparser这个插件安装到我们的web项目下了!
我们可以打开phpStorm编辑器查看一下这个obj_pdf项目目录中的情况:
如图

你会发现在项目中多出了3个东西, 分别为: vendor目录、composer.json、composer.lock这三个文件
我们可以通过phpStorm先看看composer.json这个文件
如图

这里其实会列出,我们安装的代码包、插件库的一些基本信息,在后面我会详细说明这三个文件的详细使用!
使用插件
总之就是目前这个处理PDF文档功能的小插件库我们已经安装好了,项目中也直接可以使用了!
这些插件一般都会在Packagist的官网上给出使用教程,大家可以自行搜索查看!
我们现在file目录下有一个test.pdf的文件, 需要把它的内容提取出来,打印到网页上!
这里我们新建一个index.php文件,里面写入以下代码:
//引入autoload.php
include 'vendor/autoload.php';
//创建Parser对象
$parser = new \Smalot\PdfParser\Parser();
//提取PDF文件
$pdf = $parser->parseFile('PDF文件路径.pdf');
//获取PDF文件内容
$text = $pdf->getText();
//最后输出
echo $text;
如图

注意: 一定要记住,要加上以下这行代码!
include 'vendor/autoload.php';
看到了吧, 这样我们就可以很轻松的提取到PDF文件的内容了, 是不是非常快速呢! 🤗🤗
好啦,还不赶紧去试试,愣着干啥呢! 点赞 评论 收藏啊~~😋😋😈😈❤️❤️
更多教程参考地址
[中文地址]() https://www.phpcomposer.com
[使用文档]() https://docs.phpcomposer.com/
Composer中vendor、composer.json、composer.lock这3个文件是干嘛的
前言
当我们使用Composer去下载了一些插件库代码之后,就会自动的生成vendor、composer.json、composer.lock这3个文件, 那么它们究竟是做什么的呢?有些朋友估计还不清楚吧,今天我来告诉你!
vendor目录
当我们使用Composer去下载了一些插件库代码之后,会将这些插件库下载到vendor目录下!
也就是说默认情况下会把第三方的代码库下载并且指定到vendor目录中, 方便我们进行查找
举个栗子
如果是smalot/pdfparser插件库,那么就会创建一个 vendor/smalot/pdfparser 的目录
如图

autoload.php 自动加载文件
其中你要注意一下vendor目录中的autoload.php文件, 在vendor目录中,除了下载的代码库之外,Composer还默认给我们准备了一个自动加载文件!
它的作用就是可以加载Composer下载的代码库中所有的类文件
所以我们在使用这些依赖代码库的时候,只需要将下面这行代码添加到我们的项目引导文件中或者文件头部就可以得到一个自动加载依赖的支持!
require 'vendor/autoload.php';
如图

所以composer生成了一个autoload.php文件, 在项目中引入这个文件即可自动加载依赖库
关于底层为什么会自动加载,刚刚接触的朋友可以不用去管这些,这涉及到PHP中的PSR自动加载器和php代码规范PSR简介 因为Composer本身相当于是利用PSR-0到PSR-4以及PHP的命名空间构造了一个PHP生态系统
我们在后期慢慢聊! 有兴趣的朋友也可以去官网看看
https://www.php-fig.org/psr/
composer.json 配置文件
这个文件中包含了我们web项目的代码依赖库的一些元数据信息, 是以json数据格式呈现出来的!
并且也允许我们去定义嵌套这个结构, 但是平常没有特殊需求的情况下,我们是不需要去修改里面的东西的!
如图

我们可以在这个json文件中添加一些键值对, 如下表:
| 键名称 | 值 | 描述 |
|---|---|---|
require | json对象 | 生产环境中,所有的依赖包,安装多少依赖包json对象中就有多少个! |
| … | … | … |
Require KEY
这里的require Key其实就是需要告诉Composer我们的web项目需要哪些依赖哪些包的信息!
我们安装多少依赖包,那么这个require键对应的json对象中就有多少个依赖包信息!
它的格式为如下:
{
"require": {
"包名称": "版本号"
}
}
我们可以看到require下有一个包名称例如 monolog/monolog 对应的包版本
依赖名称
包名称是由供应商名称和其项目名称组成, 通常情况下,也容易产生相同的项目名称,例如:monolog/monolog
其实它这样设定的原因是为了很好的解决了命名冲突的问题,
举个栗子
这样可以允许两个不同的人创建同样名为 monolog的库,而之后它们将被命名为a/monolog和b/monolog
依赖版本
关于这些依赖版本这里就很有必要详细说明一下了,
举个栗子
我们在前面的案例中看到require键的值是一个json对象,而这个对象中你可以看到"monolog/monolog": "^2.9"
就像以下这样子:
{
"require": {
"monolog/monolog": "^2.9"
}
}
其中这里有一个^的符号,它是有一个特定含义的
这种^2.9 表示你可以安装 2.9.x 系列的任何版本, 其中 x 是大于或等于 0 的任何数字, 也就是说可以安装 2.9.0、2.9.1、2.9.99 等等… 但不能安装 2.10 或更高版本
所以依赖版本号中我们可以插入一些符号,来进行版本的约束,
对于依赖库的版本约束,我们可以通过几种不同的方法来进行指定, 具体方案如下
| 约束形式 | 例如 | 描述 |
|---|---|---|
| 规定标准版本号 | 1.0.2 | 也就是直接可以指定依赖代码包的确切版本 |
| 规定版本号的范围 | >=1.0, >=1.0,<2.0 | 我们通过使用比较操作符来指定有效的版本范围, 这里有效的运算符有:>、>=、<、<=、!= 并且可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理, 一个管道符号` |
| 规定通配符 | 1.0.* | 你可以使用通配符*来指定一种模式, 比如说: 1.0.*与>=1.0,<1.1是等效的 |
| 规定赋值运算符 | ~1.2 | 这让版本号遵循语义化 |
| … | … |
扩展知识:波浪号运算符
在版本号前面加~最好用例子来解释:
比如说~1.2 相当于 >=1.2,<2.0
比如说~1.2.3相当于 >=1.2.3,<1.3
现在明白了吧, 所以说正如我们所看到的这对于遵循语义化版本号的项目最有用!
当我们实际开发中,要去要求某个插件依赖库的最低版本像 ~1.2 也就是说允许1.2和它的以上的任何版本,但不包括2.0 相当于~1.2 只意味着 .2 部分可以改变,但是 1. 部分是固定的!
总的来说这种版本约束的方式可以让我们在开发中去接收这些依赖代码库的补丁和更新,还是定死版本等一些版本的控制,这些都可以根据你的项目需求进行配置
对于Composer.json文件的配置选项还有很多,这里就不过多赘述了!
了解更多关于依赖版本的信息,可以到以下地址进行查询
https://semver.madewithlove.com/
composer.lock 锁文件
首先composer.lock文件会根据composer.json文件的内容进行生成, 并且和composer.json文件同级
当我们把依赖库安装完成之后,Composer会在composer.lock文件中生成锁定当前依赖库的版本信息
举个栗子
我们可以在composer.json文件中指定一个依赖库的版本信息,但不一定很明确对吧,比如可能是>=1.0这样子的写法, 但是最后composer.lock文件中会生成当前所安装的到底是哪个具体的版本号
如图

所以当我们使用composer给我们安装的依赖库时,会优先从composer.lock文件中读取依赖库的版本信息
也就是说当项目根目录下已经生成composer.lock文件时,当执行命令composer intsall时composer只会下载composer.lock文件指定的版本,忽略composer.json文件中的定义,从而确保开发团队成员都使用相同的依赖包, 这样就很好的确保每个开发者都能够调用到一样的依赖代码库 从而减轻潜在的错误对项目部署的影响.实际项目中的团队协作这就至关重要,当然如果你把composer.lock文件删除了,那么composer 将读取 composer.json并重新创建composer.lock锁文件
Composer常用命令
当你对Composer的基本操作有了一定认知以后,就可以来学习一下它的一些命令和使用方法了!
因为Composer里面很多操作都是通过命令行来实现的, 不管是下载 安装 更新等等操作都是命令行
所以掌握一定的命令使用是必然的!
那这里我就列举几个我平常比较常用的命令,给大家梳理一下
初始化工作目录 composer init
使用composer init命令来初始化composer工作目录,我们可以在自己的web项目的根目录下执行以下命令!
composer init
当我们完成初始化工作后将在项目根目录生成composer.json等相关文件
如图

帮助命令 composer list
| 命令语法格式 | 描述 |
|---|---|
composer list | 显示所有命令的帮助信息 |
使用方法
在window中我们可以通过cmd命令行窗口去使用
如图

安装命令 composer install
这个命令在我们实际开发当中经常会被使用到, 它的作用就是来安装web项目依赖库的命令
也就是说当我们的web项目中存在 composer.json文件的情况下,并且去里面编辑好项目所需的所有依赖代码包及其版本号时,我们就可以去执行这个命令来下载和安装这些依赖代码库
| 命令语法格式 | 描述 |
|---|---|
composer install | 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把代码依赖库安装到 vendor 目录下 |
| … |
小提示
如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖,这确保了该库的每个使用者都能得到相同的依赖版本,如果没有 composer.lock 文件,composer 将在处理完依赖关系后创建它!
使用方法
在win10中打开cmd命令行提示符工具,然后使用dos命令把目录地址导航到包含自己的web项目中
然后在项目目录中,运行composer install命令来安装依赖
这个命令会读取 composer.json 文件,确定项目所需的依赖包,然后下载并安装它们到vendor目录中,同时,它还会重新生成一个composer.lock文件,这个文件记录了安装时的依赖包的精确版本和其他元数据,以确保在其他环境中安装时能获得相同的依赖版本!
如图

Composer还会生成一个autoload.php文件,用于自动加载项目中使用的类,这使得我们无需手动包含每个类文件!
运行composer install这个命令后,Composer 会做以下几件事情:
- 检查
composer.json文件,确定需要安装的依赖包。 - 下载
依赖包的最新版本 - 将下载的包安装到
vendor目录下。 - 生成
composer.lock文件,记录已安装包的精确版本和其他信息。 - 根据
autoload配置生成autoload.php文件,用于自动加载类。
完成这些步骤后,我们就可以在PHP代码中通过Composer的自动加载机制来使用 这些依赖包 提供的功能了
因为这里我已经安装过了,也没有修改composer.json文件 所以这里提示我没有要安装、更新或删除的内容
更新命令 composer update
这个命令的作用其实就是更新依赖包到最新版,同时也升级更新composer.lock文件
| 命令语法格式 | 描述 |
|---|---|
composer update | 这样操作将解决项目的所有依赖,并将确切的版本号写入 composer.lock文件 |
| … |
简单的说composer update命令会先检查 composer.json 文件中指定的依赖包信息,然后尝试更新它们到指定版本,同时更新 composer.lock 文件以反映这些更改!
通常情况下,如果我们是修改了composer.json文件的情况下就要去执行一下composer update命令
举个栗子
当前我们安装了monolog/monolog依赖库, 并且在composer.lock文件中能查到当前实际版本为2.9.2
如图

那么如果现在我们的需求是要从2.9.2版本降到2.7.0版本
这时候,你最好到packagist上去查一查,2.7.0这个版本对于当前php版本是否支持,
如图

如果没有问题,你可以直接去修改composer.json文件中对应依赖的版本号
如图

然后在项目目录中,运行composer update命令来更新依赖库
如图

从图中,我们可以看到下载的monolog/monolog依赖库已经从2.9.2修改到2.7.0, 我们也可以去查看一下最终的composer.lock文件是不是也被修改了
如图

但是如果我们使用composer update来这样写,则会更新所有依赖,可能就会造成不必要的等待,我们可以去指定只想更新的依赖包,那么你可以像下面这样写:
composer update 依赖包名称
那么我们现在又从2.7.0更新到2.9.2版本
我们只需要先在composer.json文件中指定好目标版本号与版本约束,然后执行更新即可!
如图

同时查看一下composer.lock文件
如图

怎么样,是不是很简单!
删除依赖库
顺便说一下,如果你要删除依赖库,也可以直接修改composer.json文件中的配置选项
然后使用composer update更新一下, 然后composer就会自动的帮我们把vendor中的依赖删除掉!
当然我们也可以使用composer remove来删除依赖!
声明依赖 composer require
这个composer require命令的作用就是增加新的依赖包到当前目录的 composer.json 文件中
使用场景:
- 当我们需要向项目中添加一个新的第三方库或框架时。
- 当我们想要快速安装并配置一个依赖,而不想手动编辑
composer.json文件时。
| 命令语法格式 | 描述 |
|---|---|
composer require | 增加新的依赖包到当前目录的 composer.json 文件中,并自动下载和安装 |
| … |
举个栗子
我们现在使用这个命令添加一个名为phpoffice/phpspreadsheet的依赖包
首先通过cmd命令行窗口来到我们的项目目录下 然后执行以下命令
composer require phpoffice/phpspreadsheet
如果该依赖不存在的情况下,那么会自动下载并且安装依赖!
如图

同时composer.json文件中也会自动多出phpoffice/phpspreadsheet依赖包的名称和安装的版本信息
如图

注意: 同时composer.lock 文件也会被更新,以反映新添加的依赖库及其版本信息
如图

搜索依赖 composer search
这个命令用于在 Packagist包仓库中搜索可用的包, 允许我们根据关键词进行查找相关的依赖包,并查看包的描述、版本、作者和其他相关信息
| 命令语法格式 | 描述 |
|---|---|
composer search 关键字 | 在 Packagist包仓库中查找依赖包, 并列举出来 |
| … |
使用场景:
- 当我们想要查找并安装一个新的
PHP库或框架时,但不确定具体的包名称或可用的选项。
举个栗子
我现在想搜索一下有关处理excel的插件库或者代码
如图

这将列出与excel处理相关的依赖包,我们可以查看每个包的描述和版本信息,当然是英文的, 然后决定安装哪一个, 总的来说,composer search 是一个有用的工具,可以帮助我们发现和评估适合项目的PHP库和框架
注意: composer search 命令依赖于Packagist包仓库 的可用性 ,如果Packagist包仓库出现故障或访问缓慢,搜索可能会受到影响!
依赖信息展示 composer show
这个命令可以帮我们展示出当前composer中所有已经安装了的依赖库详细信息, 这个命令提供了关于依赖包的各种详细信息,如名称、版本、描述、作者等等…
| 命令语法格式 | 描述 |
|---|---|
composer show | 显示全部或指定依赖库的详细信息 |
| … |
使用场景:
- 当你想要查看项目中已经安装的所有软件包及其版本时。
- 当你想要了解特定软件包的详细信息时,例如查看其版本历史、描述、作者等。
举个栗子
现在我们要查看项目中所用到的所有依赖
如图

当然我们也可以查看特定依赖包的详细信息:
composer show 依赖名称
如图

小结
我们在使用Composer命令的时候,会经历以下几个步骤:
- 读取
composer.json文件:当你运行composer install或composer update命令时,Composer会首先读取项目根目录下的composer.json文件。这个文件定义了项目所需要的所有依赖包及其版本要求。 - 解析依赖关系:
Composer会解析composer.json中定义的依赖关系,确定哪些包需要被安装或更新。 - 检查
composer.lock文件:如果composer.lock文件存在,Composer会读取它来确定依赖包的精确版本和它们的依赖关系。这是为了确保在不同的环境中安装相同版本的依赖包,从而避免“在我机器上可以运行”这类问题。 - 下载依赖包:基于
composer.json和composer.lock中的信息,Composer会到Packagist或其他配置的源去下载所需的依赖包。 - 安装依赖包:下载完成后,
Composer会将依赖包安装到项目的vendor目录下,并根据需要生成必要的自动加载文件(通常是vendor/autoload.php)。 - 更新
composer.lock文件:如果你运行的是composer update命令,那么在安装或更新依赖包后,composer.lock文件会被更新,以反映新安装的依赖包的精确版本和它们的依赖关系。
关于Composer中的命令和其他相关的使用大家可以参考以下文档:
https://docs.phpcomposer.com/03-cli.html#Command-line-interface


"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚

好玩 好用 好看的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

1001

被折叠的 条评论
为什么被折叠?



