原文转自微信公众号:qq1005349393php
Composer介绍shell
Composer 是 PHP 的一个<font color='red'>包依赖</font>管理工具。咱们能够在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,咱们就能够很轻松的使用一个命令将其余人的优秀代码引用到咱们的项目中来。Composer 默认状况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。Composer 须要 PHP 5.3.2+ 以上版本,且须要开启 openssl。Composer 可运行在 Windows 、 Linux 以及 OSX 平台上。json
Composer安装windows
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安装composer
------直接安装 // 下载并安装 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镜像源.curl
// 切换镜像源 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中执行了命令,会生成映射文件。若是当去加载映射文件没有找到时,则提示包文件不存在。