Composer使用教程

news2024/11/14 17:01:10

Composer使用教程

  • 前言
    • 1.Composer 简介
    • 2. 下载与安装
        • 2.1 局部安装
        • 2.2 全局安装
        • 2.3 更新composer
        • 2.4查看composer
        • 2.5 安装composer镜像加速
    • 3. composer的使用
        • 3.1初始化
        • 3.2安装第三方包
    • 4. 自动加载器
        • 4.1 加载非 class 文件
        • 4.2 加载自己写 class 文件
        • 4.3 PSR-4 自动加载规范
    • 5. 常规"包"安装简单命令
    • 6. 安装脚手架
    • 7. composer 进阶
        • 7.1composer.json和composer.lock的区别
        • 7.2代码库
        • 7.3composer运行原理


前言

Composer 不会全局安装包,也就是说你全局安装了composer,你以后在哪个文件夹下面安装包都不会影响到你在其他文件夹的包,通俗的来讲,就是你全局安装composer后,你的每个文件夹都是一个虚拟环境


1.Composer 简介

  • Composer: PHP 项目的"包(class)"依赖管理工具
  • 这些包,可以是你自己写的, 也可以来自第三方
  • 不管来自哪里, composer 都能帮你自动安装好
  • 特别是第三方包,还能帮你自动更新到指定版本

本质: 是一个加强版本的自动加载器(Plus+)

2. 下载与安装

2.1 局部安装

  1. Windows安装

    直接进入指定文件夹,打开cmd输入如下几条命令即可

     php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
     php composer-setup.php
     php -r "unlink('composer-setup.php');"
    
  2. mac和Linux安装
 # mac/linux
 curl -sS https://getcomposer.org/installer | php

2.2 全局安装

推荐使用全局安装

  1. windows: https://getcomposer.org/Composer-Setup.exe
  2. macos/linux
    1. 局部安装,下载 composer.phar
    2. curl -sS https://getcomposer.org/installer | php
    3. . 移动到自定义命令目录,并重命名
    4. sudo mv composer.phar /usr/local/bin/composer

2.3 更新composer

更新composer是指全局安装的composer更新,因为,局部安装的composer一般都是最新的版本

composer selfupdate

2.4查看composer

  1. 检验你是否安装成功composer,打开你的cmd,然后在里面输入composer,如果出现如图所示的composer图,则表示安装成功了

  2. 查看composer的版本composer -V 或者:composer -Version

2.5 安装composer镜像加速

安装composer镜像加速会让你以后的包下载速度非常的快(如下操作都是指全局安装composer后)

  1. 查看配置

    	composer config -gl repo.packagist
    

    在这里插入图片描述

  2. 配置全局变量为阿里云镜像:

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
    

3. composer的使用

首先如果你要使用composer的话,你肯定是要创建文件管理包的,就像node.js当中有npm但是也需要package.json像npm中的package.json或者是composer中的composer.json这些文件一般是都有你下载的这些包的信息。

3.1初始化

  1. 直接使用composer init直接进行初始化,使用composer init命令后直接全部回车即可
  2. 直接创建composer.json文件,在文件中写入{},再使用命令composer install去安装依赖

个人推荐使用第二种方法,第二种方法创建的composer.json文件更简介,初始化后有几个文件必须要了解

  1. composer.json:可以认定为composer.lock的简写
  2. composer.lock: composer.json 中的包版本锁定文件
  3. vender目录: 第三方包,以及 composer 的自动加载器
    1. autoload.php: composer 的自动加载器
    2. composer目录: 自动加载器的配置项(系统维护)

3.2安装第三方包

其实如果一开始你就要安装第三方包的话,直接使用安装第三方包的命令就可以了,这样安装会直接初始化composer然后再进行包安装,安装包一般会有如下几个步骤:

  1. 搜索包

    • 方法1:

    比如说要搜索个php库Monolog,再cmd下直接执composer search monolog就行了

    • 方法2:

    直接进入官网搜索包,这样就可以直接下载,还会有使用教程第三方包官网

  2. 查看包

  • 查看已经安装的包composer show -all
  • 查看某个包,比如monolog,composer show --all monolog/monolog
  1. 下载包
  • 方法1:

    直接再composer.json中加入如下的字段:,然后使用命令composer install

      "require": {
        "monolog/monolog": "1.26.*"
    }
    

    一个是包的名称,一个是包的版本,(^这个符号是固定符号,*这个符号是不确定符号)

    • 方法2:

    直接按照官网来,使用composer require 包名来安装,不过这样安装的包是最新版本,使用composer require 包:指定版本来安装指定版本

  1. 跟新依赖

    如果有以下情况,都可以进行更新依赖:

    • 删除某个库

      直接再composer.json中删除该库,然后运行composer update

    • 更改某个依赖的版本
    • 新增依赖
    • 更新所有依赖

      composer update

    • 更新某个依赖

      composer update 包名

  2. 删除依赖
composer remove 包名

4. 自动加载器

  1. composer.json添加autoload字段,声明依赖"包"的路径
  2. composer dumpautoload: 将autoload字段声明注册到 composer 中

项目中需要用到自动加载的的文件有哪些?

  1. 普通文件: config/database.php
  2. 类文件: xxx.class.php
    1. 自己写的类
    2. 第三方类(别人写的):https://packagist.org/

4.1 加载非 class 文件

在composer.json文件中的autoload下面添加file

    // composer.json
    {
    "autoload": {
        "files": ["config/database.php", "lib/common.php"]
    }
}

使用就直接包含自动加载文件就可以了

4.2 加载自己写 class 文件

在composer.json文件中的autoload下面添加classmap

    {
    "autoload": {
        "files": ["config/database.php", "lib/common.php"],
        "classmap": ["inc/", "src/Base.php"]
    }
    }

使用就直接包含自动加载文件就可以了

4.3 PSR-4 自动加载规范

  1. PSR简介
  • PSR:(Standard Recommendations)PHP FIG 组织制定的推荐标准
  • PSR-4 要求
    1. 类空间映射到类文件路径
    2. 类名与类文件同名
    3. 一个类文件中只允许存在一个类
  1. PSR使用

在composer.json文件中的autoload下面添加psr-4字段即可

"psr-4": {
      "app\\admin\\controller\\": "src/app/controllers",
      "app\\admin\\models\\": "src/app/models",
      "app\\": [
        "src/app",
        "src/app/test"
      ]
    }

使用就直接包含自动加载文件就可以了


5. 常规"包"安装简单命令

  1. composer.json中添加require字段

    "require": {
        "catfan/medoo": "^2.1"
    }
    
    # 无composer.lock
    composer install
    # 有composer.lock
    composer update
    
    
  2. 三合一: 声明,注册,下载

    # 下载包
     composer require catfan/medoo
     
     # 移除包
     composer remove catfan/medoo
    

6. 安装脚手架

以安装thinkphp为例

```bash
# 安装脚手架/目录架构,包含了源码vendor目录
composer create-project topthink/think shop

# 只有源码,没有目录架构
composer require topthink/framework
```

7. composer 进阶

7.1composer.json和composer.lock的区别

  1. 可以理解为composer.json包含的是依赖包的简要信息而composer.lock文件包含的是依赖的详细信息
  2. 如果是把composer.json这个文件分享给同事或者朋友,执行install命令后,那版本号可能是和你自己本地开发使用的版本是不同的,这时候composer.lock文件就起到了关键作用,因为composer.lock文件里面是有显示的版本号的,只要把这个文件分享出去,别人再执行composer install命令的话,安装的依赖包就会和你本地开发安装的是一个版本,这样就会防止一些不必要的bugs。
  3. 执行install操作后,composer会先去看看有没有composer.lock文件,如果有就安装lock文件内的依赖包,如果没有会再去找composer.json文件并安装,而composer update操作,就会直接读composer.json文件,根据版本规则去更新,但是他们两个操作最后都是会更新lock文件

总结:发送你写的东西,和依赖包的时候,发送composer.lock就可以了,无composer.lock使用composer install,有composer.lock使用composer update

7.2代码库

composer中的代码也就是gethub中的代码,只不过使用了Packagist把github中的代码集合了,就是把代码整理在Packages

Packagist,代码安装库
学习猿地

composer常用的库
在这里插入图片描述

7.3composer运行原理

在这里插入图片描述


资料
Composer中文使用教程
菜鸟教程

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

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

相关文章

【脱产二站上岸】上海交大819复习经验总结

笔者来自通信考研小马哥23上交819全程班学员 本科西南某985,成绩排名中下(面试被老师疯狂吐槽),一战本校,初试分数差10来分被刷。21年12月考完数学和专业课出来就知道考不上了,分数一出就下决心二战&#…

软件测试,想找一份20k以上的工作需要掌握哪些知识?

都知道IT行业是高薪人员的聚集地,但想要成为高薪程序员却并不容易。月薪20k是测试工程师的一个门槛,想要突破就必须掌握更多的技能。 因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极…

Python列表和字典前面为什么要加星号(**)?

人生苦短,我用python 今天来和大家一起学习一下为什么Python列表和字典前面会加星号()?** python 安装包资料:点击此处跳转文末名片获取 Python 中, 单星号*和双星号**除了作为“乘”和“幂”的数值运算符外&#xff…

【python的pdb调试简单了解一下?】

调试是程序开发过程中的重要环节,它可以帮助开发人员识别和解决程序中的错误和问题。Python 提供了一个内置的调试器 pdb(Python Debugger),可以帮助开发人员逐行分析代码、查看变量值、跟踪函数调用等。 入门 要使用 pdb 调试器…

Numpy从入门到精通——存读矩阵以及读取矩阵中的数据

这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《…

c#期末复习题重点难点题

2. (单选题, 9分)在.NET中,.NET Framework由( )组成。 A. FCL和CLR -开发库和运行环境B. ADO.NETASP.NET -数据操作和web框架C. CLS和CTS -语法规范和类型规范 即所有语言和语法规范 和 各语言间的类型互操作性规范D. Winform和ASP.NET…

2023前端面试上岸手册——JavaScript部分

目录 JavaScript 有哪些数据类型,它们的区别?数据类型检测的方式有哪些null 和undefined 区别如何获取安全的 undefined 值?Object.is() 与比较操作符 “两等” 、“三等” 的区别?什么是 JavaScript 中的包装类型?为什…

盘点:这些好用的ERP软件你知道哪些?

在选择ERP系统时,我们可以按照这三个维度,然后再按照需求去选择ERP系统。 市面上ERP软件大概可以分为三大类: ① 标准ERP应用:功能比较固定,难以满足个性化需求,二次开发难度很高; ② 找外包/…

校企合作 | 璞华×中南财经政法大学,共建教学实习(就业实践)基地

4月17日,璞华集团与中南财经政法大学举行校外教学实习基地签约及挂牌仪式,揭开校企产学研合作序幕。 中南财经政法大学统计与数学学院院长张虎先生、统计与数学学院党委书记&副院长梁娜女士、统计与数学学院院党委副书记&纪委书记王瑄女士、外国…

酒店行业,BI分析关注哪些指标

酒店作为企业商旅系统中相关酒店业务实现的基础核心部分,会接入大量不同类型的供应商,从这些供应商拉取大量的酒店数据,并对这些数据进行整合。 信息化建设确实帮助酒店行业提高了管理水平,更好地实现资源共享。但同时管理需求日…

自然语言处理基本任务综述

文章目录 1.多语言分词2.词性标注3.命名实体识别4.中心词提取5.依存句法分析6.文本纠错7.文本摘要8.文本相似度9.情感分析10.文本分类11.词向量 1.多语言分词 ​ 在自然语言处理中,分词(Tokenization)是指将自然语言文本中的连续字符序列划分…

前端性能优化点--防抖节流

防抖debounce 防抖函数指的是某个函数在某段时间内,无论触发了多少次回调,都只执行最后一次。 假如我们设置了一个等待时间 3 秒的函数,在这 3 秒内如果遇到函数调用请求就重新计时 3 秒,直至新的 3 秒内没有函数调用请求&#x…

关于package.json中版本锁定的方法和问题解决

前置知识:先了解一下package.json和package-lock.json的关系和区别,请看这篇文章 然后我们来说一下改怎么锁定版本? 首先肯定是要把package.json中的 ^ 这个符号去掉,但是如果你只去掉package.json中的 ^那就太天真了&#xff0…

ESP32的VSPI和HSPI

说明 SPI共有4根线,MOSI、MISO、CS、CLK,在ESP32中对应规则如下表: ESP32共有4个SPI,但是用户能够使用的只有2个SPI,分为VSPI和HSPI。 引脚接口 在ESP32的数据手册中,说明了VSPI和HSPI对应的引脚&…

薪资结构重铸: Zebec将业务范围扩大到Web2薪资管理领域

通过收购美国支付公司PayBridge,Zebec的流支付技术正在扩展到企业级薪酬发放平台。 近日,流支付协议Zebec Protocol宣布,其通过美国投资机构Payroll Growth Partners(PGP)收购了Web2薪酬管理公司PayBridge。PayBridge总…

和月薪5W的阿里程序员聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 阿里内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工&#x…

完整的生产车间管理流程是怎样的?六大步骤分享

阅读本文您将了解:1.生产车间管理的特征;2.生产车间管理流程具体步骤;3.生产车间管理流程规范的重要性。 一、生产车间管理的特征 车间管理是指对车间所从事的各项生产经营活动进行计划、组织、指挥、协调和控制的一系列管理工作。生产车间…

FE_TA不知道的CSS 换行系列【2】word-break word-wrap

从这个名字可以知道,这个属性是控制单词如何被拆分换行的。它有三个值:normal | break-all | keep-all。 1 word-break:keep-all 所有“单词”一律不拆分换行,注意,我这里的“单词”包括连续的中文字符(还有日文、韩…

Web 学习笔记 - 网络安全

前言 Web 安全方面的基本知识是有很必要的,未必就要深入理解。本文主要介绍常见的网络攻击类型,不作深入探讨。 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描、弱口令暴力破解,到 SQL 注入,再到复杂的网络…

2023-04-24 Nginx基本使用

Nginx 文章目录 Nginx1.Nginx安装2.Nginx命令3.静态资源3.2 解决403问题3.3 root与alias区别 4.反向代理/负载均衡4.1 正向代理4.2 反向代理4.3 负载均衡策略 5.动静分离 1.Nginx安装 1.上传解压Nginx压缩包 2.先安装所需依赖包 yum -y install pcre-develyum -y install ope…