composer是什么?
Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。只有符合(并不绝对,composer支持自定义加载方式,但强烈建议)psr-0(已废弃)或psr-4的代码编程规范的扩展包才能实现composer的自动加载机制。
如何安装
第一种方法安装包
第二种方法手动安装
找到下载网址官网或者阿里镜像(推荐)
将下载的composer.phar
放到php安装目录下
在php的目录下使用cmd
的环境执行命令(不用使用powershell
)
echo @php "%~dp0composer.phar" %*>composer.bat
中国镜像
由于官方的镜像在github下载速度过于缓慢,强烈建议改为阿里镜像,使用如下命令
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
或者在项目的composer.json中单独配置
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
如何使用
- 如果使用了thinkphp,laravel框架等,框架内部已经引入了自动加载的代码,它们会在入口文件的地方使用类似代码
require __DIR__.'/../vendor/autoload.php';
,composer的自动加载会在vendor目录下生成一个autoload.php文件,只要引入了这个文件,就能实现自动加载,以tp框架为例,在composer.json中有如下代码
"autoload": {
"psr-4": {
"app\\": "application"
},
"files": [
"app/Helpers/functions.php"
],
},
这个代码意思是将tp框架的跟目录下(与vendor
平级的目录)的application
目录映射为app
的命名空间,凡是在application
目录下的文件,只要psr-4
的规范的都可以实现自动加载,下面那个files指的是app/Helpers/functions.php
这个文件也会被自动加载。
- 在一个空白项目中使用,首先使用
composer init
,创建一个composer.json
文件,然后使用composer require xxx
引入某个扩展包,当你要使用这个扩展包文件时,只要在你的php入口文件(入口文件假设于vendor目录平级)中使用require './vendor/autoload.php'
,就可以实现自动加载相关类,而无需手动引入。
composer.json内容详解
只讲require
字段,其它字段详细文档
- require 字段显示你引用了那些依赖
{
"require": {
"monolog/monolog": "1.0.*"
}
}
名称 | 实例 | 描述 |
---|---|---|
确切的版本号 | 1.0.2 | 你可以指定包的确切版本 |
范围 | >=1.0; >=1.0,<2.0; >=1.0,<1.1|>=1.2 | 通过使用比较操作符可以指定有效的版本范围。有效的运算符:>、>=、<、<=、!=。你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号 |
通配符 | 1.0.* | 你可以使用通配符*来指定一种模式。1.0.*与>=1.0,<1.1是等效的。 |
赋值运算符 | ~1.2 | 这对于遵循语义化版本号的项目非常有用。~1.2相当于>=1.2,<2.0。 |
composer.lock 锁定依赖版本
当你执行composer install
或 composer require xxx
后,会生成或改写一个composer.lock,将当时的依赖版本进行锁定,可以将此文件加入git管理中,可以锁定项目的依赖版本,防止版本不同造成的兼容性问题。
composer中的一些常用命令
1、composer list 获取帮助信息
2、composer init 以交互方式填写composer.json文件信息
3、composer install 从当前目录读取composer.json文件,处理依赖关系,并安装到vendor目录下
4、composer update 获取依赖的最新版本,升级composer.lock文件
5、composer require 添加新的依赖包到composer.json文件中并执行更新
6、composer search 在当前项目中搜索依赖包
7、composer show 列举所有可用的资源包
8、composer validate 检测composer.json文件是否有效
9、composer self-update 将composer工具更新到最新版本
10、composer create-project 基于composer创建一个新的项目
11、composer dump-autoload 在添加新的类和目录映射是更新autoloader
12、composer remove twbs/bootstrap 删除依赖后还需要去vender文件夹里,手动删除