🚀 个人主页 极客小俊
✍🏻 作者简介: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
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇