composer基本操作详解
原文转自微信公众号:qq1005349393
Composer介绍
Composer 是 PHP 的一个包依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。Composer 默认情况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。Composer 可运行在 Windows 、 Linux 以及 OSX 平台上。
Composer安装
1.Windows安装
Wondows 平台上,我们只需要下载 Composer-Setup.exe 后,一步步安装即可。需要注意的是你需要开启 openssl 配置,我们打开 php 目录下的 php.ini,将 extension=php_openssl.dll 前面的分号去掉就可以了。

安装完成之后,检测是否安装成功。可以使用
composer --version
命令查看,如下图:

2.Linux安装
// 下载composer文件
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
// 使用PHP解释器安装composer
php composer-setup.php
// 移动到系统可执行文件目录,方便我们后期直接使用composer命令进行全局调用
mv composer.phar /usr/local/bin/composer
3.Mac Os安装
------直接安装
// 下载并安装
curl -sS https://getcomposer.org/installer | php
// 移动到可执行文件目录,便于全局调用
sudo mv composer.phar /usr/local/bin/composer
------使用Mac上面的brew包管理工具安装
brew install composer
// 检测是否安装成功
composer --version
4.如何切换composer镜像源
现在阿里处理自己的composer镜像源,并且能够做到与Packagist官网实时同步,推荐使用阿里的composer镜像源.
// 切换镜像源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
// 取消配置
composer config -g --unset repos.packagist
// 只针对当前项目切换镜像源(非全局切换)
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
// 取消当前项目的镜像源
composer config --unset repos.packagist
5.composer更新
composer的更新可以使用自身的命令来更新
composer selfupdate
Composer使用
Composer的使用,我们常见的几个操作如下:
1.composer install
当我们的composer.json文件中增加了项目的依赖关系,如下:
{
"require": {
"topthink/framework": "5.0.5",
}
}
此时我们使用 composer install时,会自动根据包中的依赖关系,来安装相对应的包。
2.composer update
该命令会根据composer.json配置文件中包依赖以及相应的版本,更新包的版本,但是该命令会将所有的包都更新到最新版本,在实际的项目中需要谨慎使用,尤其是在生产环境上面。
3.composer require
第1点中,我们讲到了如何去根据composer.json配置文件中的包依赖配置,安装对应的包。该命令可以不需要根据配置文件,而是去手动安装一个包。安装完之后,对应的依赖配置会自动添加在composer.json配置文件中。
4.composer remove
该命令可以移除指定的包依赖,例如我们不需要依赖某个包直接使用该命令+包名
composer remove "topthink/framework": "5.0.5"
同样的,执行该命令之后,composer.json配置文件中的包依赖会自动删除,无需我们手动操作。
5.composer show
该命令主要是为了查看当前项目已经安装的包相关信息。
// 查看所有已经安装的包的信息
composer show
// 指定查看已经安装的包的信息
composer show topthink/framework
Composer.json与Composer.lock的区别是什么
我们在使用composer的过程中会发现,当我们执行composer update等命令,会发现无意中多了一个composer.lock文件。那这个文件主要是干什么的呢?该文件主要是管理包版本使用的,当我们在使用composer update命令时,composer会自动根据composer.json的包版本依赖,生成对应的composer.lock文件,当我们下次在执行composer命令的时候,首先也会去读取composer.lock文件的内容。
Composer版本约束
在我们使用composer安装包时,不得不考虑的就是一个版本问题,因为不同的版本,存在兼容性问题,因此我们在使用该工具安装包时需要特别的注意包版本,如果使用不当很容易导致项目因为包版本问题瘫痪。常见的几种如下:
1.精准版本
明确要安装到那个版本,如需要安装包的版本是1.2.3
"topthink/think-captcha": "v1.2.3",
2.通配符
既满足指定范围即可,如下范围在5.0到5.1之间
"topthink/framework": "5.0.*",
3.范围
范围常用的操作符有>,>=,<,<=,!=。你可以定义多个范围,使用空格或者逗号 , 表示逻辑上的与,使用双竖线 || 表示逻辑上的或。其中与的优先级会大于或。
// 表示大于等于0.90并且小于3.0的版本
"ruflin/elastica": ">=0.90 <3.0",
4.波浪符 ~
该操作符限制最小版本号。
允许表达式中的最后一位版本号达到最大值
如~1.2与>=1.2 <2.0相等,~1.5.6与>=1.5.6 < 1.6.0相等。也就是主版本号与次版本号保持不变,修复版本号可以达到最大值。
5.折音符 ^
该操作符约束锁定最大版本号。
锁定表达不变的是第一位主版本号,允许升级版本到安全的版本号
如^1.2就等于>=1.2 <2.0,^1.2.3就等于>=1.2.3 < 2.0.0。
语义化
什么是语义化呢?说的简单一点即是版本号管理。我们的包一般分文如下格式组成:
php 主版本号+次版本号+修复版本
如上面的例子中,我们都提到了一些包的版本号是x.x.x。第一位就是主版本号,第二位就是次版本号,第三位就是针对一些bug修复来的修复版本号。具体的可以参考https://semver.org/lang/zh-CN/
Composer使用优化
1.composer 加载类型
composer加载类型包括classmap,psr-0,psr-4,file.psr-0逐渐的被抛弃了,由于一些老项目还在使用该规则,因此部分项目仍在使用。大多数的是使用psr-4。classmap是包文件的映射处理,下面有讲。file主要加载一些helper的操作。
1.composer dump-autoload -o
该命令会根据包的命令空间和路径生成文件映射,当去加载包的时候,会根据映射去加载包文件。这样会加快我们的包文件访问速度。当我们执行了该命令,可以查看如下如的界面。被圈出来的就是类映射配置。

composer具体怎么去处理这个加载顺序逻辑,我们可以通过查看composer加载类的处理顺序。下图中圈出的方法,首先就是去加载classmap,没找到在去加载psr-4。

2.composer dump-autoload -a
该命令主要的是功能是,当在我们1中执行了命令,会生成映射文件。如果当去加载映射文件没有找到时,则提示包文件不存在。
composer基本操作详解的更多相关文章
- DNS基本操作详解
在很多人看来,DNS只是为外部提供DNS解析服务(我以前也是这么认为的,直到膝盖中了一箭),但作为互联网的基础设施,DNS远没有想象的那么简单.如果你没有听说过DNS查询.反向解析.zone传输.动态 ...
- composer 使用详解
1,安装 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r &quo ...
- Git(一)之基本操作详解
前言 在这段时间的工作中一直都是用Git作为版本控制,只是知道简单的几个命令,没有去了解它的内部原理.所以周末有时间来系统学习. 现在的公司基本上都是用Git作为版本控制,当然也有SVN的. Git是 ...
- composer命令详解
composer命令行 你已经学会了如何使用命令行界面做一些事情.本章将向你介绍所有可用的命令. 为了从命令行获得帮助信息,请运行composer或者composer list 命令,然后结合--he ...
- composer.json详解
composer.json 架构:https://docs.phpcomposer.com/04-schema.html#homepage composer.json 完全解析:https://lea ...
- 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解
目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...
- Python-OpenCV —— 基本操作详解
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.MacOS操作系统上.它轻量级而且高效——由一系列 C 函数和少量C++类构成,同时提供了Pyt ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
随机推荐
- react解析markdown文件
当当当又get到了一个新技能,使用react-markdown来直接解析markdown文件(咳咳,小菜鸟的自娱自乐) 项目中遇到了一个API的那种展示方式,类似于入门手册啥的那种,如果是一个个调用接 ...
- jmeter BeanShell的几种使用方式
jmeter的BeanShell Sampler,可以直接引用java代码,有下面3种方式: 1.直接输入java代码:2.导入java文件:3.导入class文件 BeanShell脚本访问变量主要 ...
- docker使用,包括有nvidia-docker
docker run 命令:https://www.runoob.com/docker/docker-run-command.html docker run -it ubuntu:15.10 /bin ...
- 【day02】Xhtml
一.HTML实体(HTML Entites) 1.HTML实体:W3C规定在浏览器看到的特殊符号必须用HTML实体 单引号(') ===== ' 双引号(") ===== " ...
- ST表基础模板
ST表是用来求RMQ问题(求区间最大或最小值问题)的实用数据结构,支持\(O(nlog_n)\)建立,\(O(1)\)查询,是比较高效的结构 其原理实质上是DP(我最讨厌的东西) 题面:屠龙宝刀... ...
- 奇安信集团笔试题:二叉树的最近公共祖先(leetcode236),杀死进程(leetcode582)
1. 二叉树最近公共祖先 奇安信集团 2020校招 服务端开发-应用开发方向在线考试 编程题|20分2/2 寻祖问宗 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制: ...
- 在ASP.Net Core 中使用枚举类而不是枚举
前言:我相信大家在编写代码时经常会遇到各种状态值,而且为了避免硬编码和代码中出现魔法数,通常我们都会定义一个枚举,来表示各种状态值,直到我看到Java中这样使用枚举,我再想C# 中可不可以这样写,今天 ...
- 使用selenium爬虫抓取数据
写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了.ps:事多有时候反倒会耽误事.几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟访问某些固定网站,将自己关注的 ...
- python3爬虫筛选所需要数据
第一次使用博客园,也是第一篇文章,让我们一起开启学习之旅吧!! 昨天在为某授权系统做安全性测试的时候,可以未授权访问系统的用户登陆统计记录.由此想整理出部分用户名,作为暴力破解的用户名,检查是否存在用 ...
- Tensorflow源码解析2 -- 前后端连接的桥梁 - Session
Session概述 1. Session是TensorFlow前后端连接的桥梁.用户利用session使得client能够与master的执行引擎建立连接,并通过session.run()来触发一次计 ...