Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。
Composer 默认情况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。
Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。
Composer 可运行在 Windows 、 Linux 以及 OSX 平台上。
![](https://www.runoob.com/wp-content/uploads/2018/10/composer-logo.png)
* * *
## Composer 的安装
### Wondows 平台
Wondows 平台上,我们只需要下载[Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe)后,一步步安装即可。
需要注意的是你需要开启 openssl 配置,我们打开 php 目录下的 php.ini,将extension=php\_openssl.dll前面的分号去掉就可以了。
![](https://www.runoob.com/wp-content/uploads/2018/10/How-to-Install-Composer-on-Windows-Specify-PHP-File-Location.png)
安装成功后,我们可以通过命令窗口(cmd) 输入composer --version命令来查看是否安装成功:
![](https://www.runoob.com/wp-content/uploads/2018/10/Test-Whether-The-Composer-is-Successfully-Installed.png)
接下来我们可以更改阿里云 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
~~~
**调试**
composer 命令增加 -vvv 可输出详细的信息,命令如下:
~~~
composer -vvv require alibabacloud/sdk
~~~
**遇到问题?**
1\. 建议先将Composer版本升级到最新:
~~~
composer self-update
~~~
2\. 执行诊断命令:
~~~
composer diagnose
~~~
3\. 清除缓存:
~~~
composer clear
~~~
4\. 若项目之前已通过其他源安装,则需要更新 composer.lock 文件,执行命令:
~~~
composer update --lock
~~~
5\. 重试一次
### Linux 平台
Linux 平台可以使用以下命令来安装:
~~~
# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
# php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 1.6.5) successfully installed to: /root/composer.phar
Use it: php composer.phar
~~~
移动 composer.phar,这样 composer 就可以进行全局调用:
~~~
# mv composer.phar /usr/local/bin/composer
~~~
切换为国内镜像:
~~~
# composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
~~~
更新 composer:
~~~
# composer selfupdate
~~~
### Mac OS 系统
Mac OS 系统可以使用以下命令来安装:
~~~
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --version
Composer version 1.7.2 2018-08-16 16:57:12
~~~
切换为国内镜像:
~~~
$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
~~~
更新 composer:
~~~
$ composer selfupdate
~~~
* * *
## Composer 的使用
要使用 Composer,我们需要先在项目的目录下创建一个 composer.json 文件,文件描述了项目的依赖关系。
文件格式如下:
~~~
{
"require": {
"monolog/monolog": "1.2.*"
}
}
~~~
以上文件说明我们需要下载从 1.2 开始的任何版本的 monolog。
接下来只要运行以下命令即可安装依赖包:
~~~
composer install
~~~
### require 命令
除了使用 install 命令外,我们也可以使用 require 命令快速的安装一个依赖而不需要手动在 composer.json 里添加依赖信息:
~~~
$ composer require monolog/monolog
~~~
Composer 会先找到合适的版本,然后更新composer.json文件,在 require 那添加 monolog/monolog 包的相关信息,再把相关的依赖下载下来进行安装,最后更新 composer.lock 文件并生成 php 的自动加载文件。
### update 命令
update 命令用于更新项目里所有的包,或者指定的某些包:
~~~
# 更新所有依赖
$ composer update
# 更新指定的包
$ composer update monolog/monolog
# 更新指定的多个包
$ composer update monolog/monolog symfony/dependency-injection
# 还可以通过通配符匹配包
$ composer update monolog/monolog symfony/*
~~~
需要注意的时,包能升级的版本会受到版本约束的约束,包不会升级到超出约束的版本的范围。例如如果 composer.json 里包的版本约束为 ^1.10,而最新版本为 2.0。那么 update 命令是不能把包升级到 2.0 版本的,只能最高升级到 1.x 版本。关于版本约束请看后面的介绍。
### remove 命令
remove 命令用于移除一个包及其依赖(在依赖没有被其他包使用的情况下),如果依赖被其他包使用,则无法移除:
~~~
$ composer remove monolog/monolog
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 0 updates, 2 removals
- Removing psr/log (1.0.2)
- Removing monolog/monolog (1.23.0)
Generating autoload files
~~~
### search 命令
search 命令可以搜索包:
~~~
$ composer search monolog
~~~
该命令会输出包及其描述信息,如果只想输出包名可以使用\--only-name参数:
~~~
$ composer search --only-name monolog
~~~
### show 命令
show 命令可以列出当前项目使用到包的信息:
~~~
# 列出所有已经安装的包
$ composer show
# 可以通过通配符进行筛选
$ composer show monolog/*
# 显示具体某个包的信息
$ composer show monolog/monolog
~~~
* * *
## 基本约束
### 精确版本
我们可以告诉 Composer 安装的具体版本,例如:1.0.2,指定 1.0.2 版本。
### 范围
通过使用比较操作符来指定包的范围。这些操作符包括:\>,>=,<,<=,!=。
你可以定义多个范围,使用空格或者逗号 , 表示逻辑上的与,使用双竖线 || 表示逻辑上的或。其中与的优先级会大于或。 实例:
* \>=1.0
* \>=1.0 <2.0
* \>=1.0 =1.2
我们也可以通过使用连字符\-来指定版本范围。
连字符的左边表明了`>=`的版本,如果右边的版本不是完整的版本号,则会被使用通配符进行补全。例如`1.0 - 2.0`等同于`>=1.0.0 <2.1`(`2.0`相当于`2.0.*`),而`1.0.0 - 2.1.0`则等同于`>=1.0.0 <=2.1.0`。
### 通配符
可以使用通配符来设置版本。`1.0.*`相当于`>=1.0 <1.1`。
例子:`1.0.*`
### 波浪号 ~
我们先通过后面这个例子去解释~操作符的用法:`~1.2`相当于`>=1.2 <2.0.0`,而`~1.2.3`相当于`>=1.2.3 <1.3.0`。对于使用[`Semantic Versioning`](http://semver.org/)作为版本号标准的项目来说,这种版本约束方式很实用。例如`~1.2`定义了最小的小版本号,然后你可以升级2.0以下的任何版本而不会出问题,因为按照`Semantic Versioning`的版本定义,小版本的升级不应该有兼容性的问题。简单来说,`~`定义了最小的版本,并且允许版本的最后一位版本号进行升级(没懂得话,请再看一边前面的例子)。
例子:`~1.2`
> 需要注意的是,如果~作用在主版本号上,例如`~1`,按照上面的说法,Composer可以安装版本1以后的主版本,但是事实上是`~1`会被当作`~1.0`对待,只能增加小版本,不能增加主版本。
### 折音号 ^
`^`操作符的行为跟`Semantic Versioning`有比较大的关联,它允许升级版本到安全的版本。例如,`^1.2.3`相当于`>=1.2.3 <2.0.0`,因为在2.0版本前的版本应该都没有兼容性的问题。而对于1.0之前的版本,这种约束方式也考虑到了安全问题,例如`^0.3`会被当作`>=0.3.0 <0.4.0`对待。
例子:`^1.2.3`
* * *
## 版本稳定性
如果你没有显式的指定版本的稳定性,Composer会根据使用的操作符,默认在内部指定为`-dev`或者`-stable`。例如:
| 约束 | 内部约束 |
| --- | --- |
| `1.2.3` | `=1.2.3.0-stable` |
| `>1.2` | `>1.2.0.0-stable` |
| `>=1.2` | `>=1.2.0.0-dev` |
| `>=1.2-stable` | `>=1.2.0.0-stable` |
| `<1.3` | `<1.3.0.0-dev` |
| `<=1.3` | `<=1.3.0.0-stable` |
| `1 - 2` | `>=1.0.0.0-dev <3.0.0.0-dev` |
| `~1.3` | `>=1.3.0.0-dev <2.0.0.0-dev` |
| `1.4.*` | `>=1.4.0.0-dev <1.5.0.0-dev` |
例子:`1.0 - 2.0`
如果你想指定版本只要稳定版本,你可以在版本后面添加后缀`-stable`。
`minimum-stability`配置项定义了包在选择版本时对稳定性的选择的默认行为。默认是`stable`。它的值如下(按照稳定性排序):`dev`,`alpha`,`beta`,`RC`和`stable`。除了修改这个配置去修改这个默认行为,我们还可以通过[稳定性标识](https://getcomposer.org/doc/04-schema.md#package-links)(例如`@stable`和`@dev`)来安装一个相比于默认配置不同稳定性的版本。例如:
~~~
{
"require": {
"monolog/monolog": "1.0.*@beta",
"acme/foo": "@dev"
}
}
~~~
- 服务器购买到搭建宝塔
- 结构规范
- php基础
- php简介
- php是什么
- PHP 能做什么
- PHP 如何运行
- 如何了解弱语言
- 安装环境
- 安装LNMP
- 宝塔
- phpstudy
- PHP基本语法
- PHP 标记
- 从 HTML 中分离
- 指令分隔符
- 注释
- php 数据类型
- 类型检测
- 四种标量类型
- boolean(布尔型)
- Integer 整型
- Float 浮点型
- String 字符串类型
- 两种复合类型
- array(数组)
- object(对象)
- 两种特殊类型
- resource(资源)
- NULL(无类型)
- 类型转换
- 变量
- 变量定义和命名规范
- 传值和引用
- 预定义变量
- php预定义变量
- $_SERVER详解
- 变量范围
- 全局变量
- 静态变量
- 可变变量
- 常量
- 常量简介
- 常量定义
- 相比变量
- 魔术常量
- 运算符
- 运算符简介
- 算术运算符
- 赋值运算符
- 位运算符
- 比较运算符
- 错误控制运算符
- 执行运算符
- 递增(减)运算符
- 逻辑运算符
- 字符串运算符
- 数组运算符
- 新增操作符
- 控制结构
- 控制简介
- if 语句
- while 语句
- for 语句
- foreach 语句
- break 语句
- continue 语句
- switch 语句
- declare 语句
- return 语句
- include 语句
- PHP 函数
- 函数简介
- 用户自定义函数
- 函数的参数
- 返回值
- 可变函数
- 内部函数
- 匿名函数
- PHP 的类和对象
- PHP 的类和对象简介
- 基本概念
- 对象继承
- 属性
- 类常量
- 自动加载对象
- 构造和析构函数
- 访问控制
- 范围解析操作符(::)
- 静态static
- Static 关键字
- 抽象类
- 接口
- 匿名类
- 面向对象其他特性
- const关键字
- final关键字
- abstract用于定义抽象方法和抽象类。
- self、$this、parent::关键字
- 接口(interface)
- trait关键字
- instanceof关键字
- 魔术方法
- 构造函数和析构函数
- 私有属性的设置获取
- __toString()方法
- __clone()方法
- __call()方法
- 类的自动加载
- 会话控制
- cookie
- PHP 操作 cookie
- 项目实战
- SESSION
- Session 的初步介绍与实验准备
- PHP 操作 session
- 项目实战2
- http
- 特点
- 工作过程
- request
- response
- HTTP状态码
- URL
- GET和POST的区别
- HTTPS
- 常用函数
- 常用的字符串函数
- 常用的数组函数
- 常用文件函数
- 常用时间函数
- 常用日历函数
- 常用url函数
- 面试题常见
- 时间戳
- 技术类文档
- 技术开发文档
- 开发环境
- 开发规范
- 注释规范
- 开发目录结构
- 数据库字典
- 路由
- 定时任务
- 获取系统配置
- 系统常用函数
- 后台表单
- 消息队列
- 第三方类库标注
- 需求文档
- 数据库
- MYSQL
- 事务(重点)
- 索引
- 存储过程
- 触发器
- 视图
- 导入导出数据库
- 优化mysql数据库的方法
- MyISAM与InnoDB区别
- 外连接、内连接的区别
- 物理文件结构
- MongoDB
- Redis
- 运用场景和实例
- pgsql
- 服务器
- Nginx
- 正向代理和反向代理
- 负载均衡
- Linux常用命令
- 基本目录和命令
- php开发工具
- phpStorm编辑器
- 安装和汉化
- 链接ftp
- 常用操作
- 常用快捷键
- 自定义快捷键
- 使用快捷键新建目录和文件
- 使用快捷键快速查找文件、类、方法
- 多文件切换
- 快速搜索设置项
- 多点编辑
- 方法重构
- 自定义文件模板和代码片段
- 自定义文件模板
- 自定义代码片段
- Xdebug 调试插件
- 安装Xdebug 调试插件
- 在PHPStorm 中使用 Xdebug 插件调试代码
- Vi Box虚拟机
- Vi Box 虚拟机 Oracle VM VirtualBox
- 虚拟机辅助工具一-Vagrant
- 华硕主板BIOS设置中VT虚拟化技术选项怎么开启 Oracle VM VirtualBox
- 沟通工具
- 文档分享
- 流程图
- 任务分配
- 代码托管
- 缺陷管理
- 设计图
- gitLab
- 安装
- 汉化
- Gitlab 用户和项目管理
- Gitlab 持续集成与自动构建实践
- PHP进阶
- 大流量解决方案
- PSR规范
- RESTFUL规范
- 设计模式
- 单例模式
- 策略模式
- 工厂模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 外观模式
- 享元模式
- 代理模式
- 命令模式
- 中介者模式
- 观察者模式
- 状态模式
- 建筑者模式
- 适配器模式
- 桥接模式
- 装饰器模式
- 排序算法
- 冒泡排序算法
- 二分查找算法
- 直接插入排序算法
- 希尔排序算法
- 选择排序算法
- 快速排序算法
- 常见网络攻击类型
- CSRF攻击
- XSS攻击
- SQL注入
- Cookie攻击
- thinkphp
- thinkphp5命令行
- git
- Git 常用命令操作和基础学习
- 傻瓜与白痴的笔记本
- 学习
- 一、Git 与 GitHub 的来历
- 二、在 GitHub 上创建仓库
- 三、安装
- Windows 上安装 Git
- 安装2
- 四、克隆 GitHub 上的仓库到本地
- 五、GIT基本操作哦
- 六、Git 分支操作
- 一、添加SSH关联授权
- 二、为 Git 命令设置别名
- 三、Git 分支管理
- 七、多人协作 GitHub 部分
- 八、多人协作 Git 部分
- 九、Git tag 和 GitHub releases
- composer
- Composer 基础使用
- 安装和使用
- 在项目中集成PHPmailer
- 认识composer.json和composer.lock文件
- composer的其他命令操作
- 本地创建composer包
- 提交自己的依赖包到composer Packagist
- crontab计划任务
- Linux任务计划crontab
- php 的 计划任务——Crontab
- bootstrap前端框架
- 入门
- 实战技巧
- 后台模板样式——admin
- 第三方接口对接
- 微信
- 敏感词过滤
- 微信图片检测
- 短信类型
- 阿里云短信
- 容联云短信
- 飞鸽短信
- 媒体
- 新闻接口测试
- 免费新闻
- 免费视频
- nba赛事,未测试
- 豆瓣电影接口
- 音乐接口
- 网易短视频接口
- 知乎微信接口
- 百度ai
- 百度语音
- 图片识别
- 腾讯
- 腾讯im
- 腾讯云直播
- 腾讯滑动验证
- 物流快递
- 快递鸟、快递100
- 推送
- 极光推送
- 地图&天气
- 获取城市和天气预报
- 地址获取和定位
- 地址转换经纬度
- 图片类型
- 360新闻图片
- 多平台翻译
- 实名认证
- 七牛云
- 云合同
- 多站点收录查询接口
- 打印机
- 第三方登录
- 微信登录
- 支付
- 支付宝app支付
- 微信提现+退款
- 微信app支付
- 微信支付公式
- 类库
- 图片类
- phpqrcode实战:生成二维码
- 图片处理类
- 验证码类
- 消息类
- PHPMailer
- 分词类
- ik
- PHPAnalysis
- 自己封装的方法
- GD库
- 自动获取图片主题颜色
- 图片转素描
- 生成海报
- 图片转字符
- 验证码
- 图片转黑白灰
- GD库实现图片水印与缩略图
- Imagick扩展
- 将一张image图片转化为字符串的形式
- 基本方法
- 图片路径转base64
- 生成文件后缀图片
- url路径判断拼接
- 防篡改入口文件
- php中文姓名判断
- 可控抽奖
- 特殊截取
- 银行卡位(特殊卡号不支持)
- 微信红包计算
- 数组和对象互转
- php批量更新修改数据库
- base64_img上传
- 删库删目录————跑路
- 字符串特殊符号过滤
- 首字母转成默认头像
- 生成随机字符串
- 根据id转 邀请码
- 日志写入
- 字符串截取,超出显示省略号
- 清除html标签+清除html标签,字符串截取
- 计算时间差的函数和演示
- php判断路径是否是绝对路径,如果不是拼接至绝对路径
- sql 参数过滤
- php敏感词过滤
- 省市区分别截取
- 生成csv
- 无限极分类
- api接口返回封装的方法函数
- xml和数组互转
- 获取thinkph5下控制器和方法名
- 过滤
- 获取服务器信息
- php随机颜色
- 创建多级目录
- 推广码
- 跨域检测
- 二维码
- 文档类
- word
- PHPWord
- tcPdf
- MPDF
- dompdf
- FPDF、Fpdi类库
- excel
- PhpSpreadsheet导入
- phpExcel
- 时间
- PHP-农历+节气+节日等类库
- 时间类库
- 最好用的是人性化时间差
- 文件管理类
- 文件操作类
- 文件夹操作
- php操作ftp的类库
- curl
- 数据库操作类
- Db扩展函数
- 数据库备份
- 仿tp5的Db库
- 不常用mysql
- 自动生成数据库字典
- 字符串
- 字符串操作helper/Str
- 随机生成姓名
- 随机生成类
- php字符串类
- 中文转拼音的类库
- 分类
- 缓存
- 数据验证
- 身份证相关操作
- 安全类
- 表单生成类
- 自动生成表单,未完待续中