PHP的包依赖管理工具Composer简介
composer是一个基于项目的依赖管理器,负责将php项目的所依赖的包和库安装在项目的目录中,默认不会不会安装任何数据到全局.他用于取代之前pear工具
1 安装Composer
- curl -sS https://getcomposer.org/installer | php
- mv composer.phar /usr/local/bin/composer
2 简单应用
我们只需要声明一个项目所依赖的包或库即可,此后其他的事情就由Composer来处理了。因此使用Composer最重要的就是在项目目录中编写composer.json配置文件。例如你有一个项目,需要依赖monolog,可以这样写composer.json文件:
{
"require":
{
"monolog/monolog": "1.2.*"
}
}
有了此文件后,在项目目录中执行composer install,即会在项目目录的vendor/目录下创建其所依赖的库。
另一方面,包含了composer.json的目录,也可以发布出去,让其他人通过composer进行安装。只需要在packagelist网站,把此包传上去即可。
3 配置文件说明
Composer使用json作为其配置文件的格式。在工程的根目录下composer.json所定义的包称为root包。在配置文件中有如下的属性。
3.1 require
格式为: "require":{"vendor-name/package-name":"version", ...}
名字部分会作为vendor下的路径进行创建
版本支持精确的版本号,也支持范围如>=1.0; >=1.0,<2.0; ","作为逻辑与,而"!"作为逻辑或的意思。示例中使用了通配符*
版本也支持tag或branch名称。
类似的有require-dev,前者用于声明项目发布版本的依赖包,后者用于声明项目开发或测试中依赖的包。
3.2 autoload
composer支持PSR-0,PSR-4,classmap及files包含以支持文件自动加载。PSR-4为推荐方式。
3.2.1 Files类型
格式:"autoload":{"files":["path/to/1.php","path/to/2.php",...]}
支持将数组中的文件进行自动加载,文件的路径相对于项目的根目录。缺点是麻烦,需要将所有文件都写进配置。
3.2.2 classmap类型
格式:"autoload":{"classmap": ["path/to/src1","path/to/src2",...]}
支持将数组中的路径下的文件进行自动加载。其很方便,但缺点是一旦增加了新文件,需要执行dump-autoload命令重新生成映射文件vendor/composer/autoload_classmap.php。
3.2.3 psr-0类型
格式:"autoload":{"psr-0":{
"name1\\space\\":["path/",...],
"name2\\space\\":["path2/",...],
}
}
支持将命名空间映射到路径。命名空间结尾的\\不可省略。当执行install或update时,加载信息会写入vendor/composer/autoload_namespace.php文件。如果希望解析指定路径下的所有命名空间,则将命名空间置为空串即可。
需要注意的是对应name2\space\Foo类的类文件的路径为path2/name2/space/Foo.php
3.2.4 psr-4类型
格式:"autoload":{"psr-4":{
"name1\\space\\":["path/",...],
"name2\\space\\":["path2/",...],
}
}
支持将命名空间映射到路径。命名空间结尾的\\不可省略。当执行install或update时,加载信息会写入vendor/composer/autoload_psr4.php文件。如果希望解析指定路径下的所有命名空间,则将命名空间置为空串即可。
需要注意的是对应name2\space\Foo类的类文件的路径为path2/space/Foo.php,name2不出现在路径中。
PSR-4和PSR-0最大的区别是对下划线(underscore)的定义不同。PSR-4中,在类名中使用下划线没有任何特殊含义。而PSR-0则规定类名中的下划线_会被转化成目录分隔符。
3.3 name
格式:"name":"vendor/package"
如果要发布一个包,你需要指定包的名字信息。
3.4 version
格式:"version":"1.0.2"
如果要发布一个包,你需要指定包的版本号。版本号的格式为X.Y.Z或vX.Y.Z,其后可以加后缀如-dev,-patch,-alpha,-beta或-RC。除dev外,尾上还可加一个数字,如1.0.0-alpha3。
3.5 description
格式:"description":"your own description at here!"
如果要发布一个包,可以指定一个简短的介绍
3.5 type
格式:"type":"library"
说明包的类型,支持如下library,project,metapackage,composer-plugin,默认为library
3.6 keywords
格式:"keywords":["logging","database","redis"]
一个数组的关键字,用于搜索或过滤时使用。
3.7 homepage
可选的,说明项目的网站地址
3.8 time/license
说明项目的时间和License,时间格式为YY-MM-DD HH:MM:SS
3.9 authors
格式:"authors":[
{"name":"ss","email":"ss@ss.com","homepage":"","role":""},...
]
用于说明项目的作者信息,为可选的。
3.10 support
格式:"support":{"emial":"","issues":"","forum":"","wiki":"","irc":"" }
用于说明项目的支持信息
3.11 conflict
用于声明与本包有冲突的包的版本,使用类似于require。
3.12 replace
用于声明需要替换的包,使用类似于require
3.13 provided
用于说明本包实现了某个包的接口
3.14 suggest
格式:"suggest":{"vendor/package":"Some description!"}
用于说明可选的,用于增强功能的包及说明。
4 命令行工具
有了配置文件后,便可以使用composer命令来执行,有如下命令
init 进入交互式向导,在当前目录下生成composer.json文件
install 根据配置进行安装
选项 --prefer-source
--prefer-dist
--dry-run
--dev/--no-dev
-o 将psr0/4转换为classmap以提升性能
update [package-name ...] 根据配置升级指定的包
search [pattern] 从packagelist中搜索包
show [package-name] 显示包的信息
depends package 分析项目中包的依赖
validate 验证配置文件内容
status 检查代码是修改信息
self-update 升级composer本身
config 配置composer本地或全局选项,可以--list显示所有可配置项 格式为conifg [option] [key] [value...]
create-project vendor/package path version 在指定路径下下载一个项目,默认从packagelist上搜索
dump-autoload 当类映射中加入新类时,用于更新加载器
5 自动加载
对于composer管理的依赖,如果希望自动加载只需要在文件中加入:require 'vendor/autoload.php'
拿上面的例子,使用依赖的类就十分简单了,使用packet-name\class-name就可以直接访问了。如
$log = new Monolog\Logger();
6 杂项
composer.lock文件用于记录各依赖的版本,如果使用了VCS,即此文件也需要进行提交。因为如果此文件存在,即composer会按照此文件中的版本进行下载,会忽略composer.json文件。如果需要更新版本,则需要修改composer.json,并执行update命令,此时会下载新版本,并更新composer.lock文件。
PHP的包依赖管理工具Composer简介的更多相关文章
- 有用PHP依赖管理工具Composer新手教程
PHP依赖管理工具Composer新手教程 Composer 是 PHP 的一个依赖管理工具.它同意你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 依赖管理 Composer 不是一个包管理 ...
- golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的
golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的 1:执行脚本setGoPath.sh#!/bin/bashif [[ $GOPATH =~ .*$ ...
- Go 包依赖管理工具 —— govendor
govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...
- PHP的依赖管理工具----composer
安装Composer 参考:https://getcomposer.org/doc/01-basic-usage.md composer 是PHP依赖管理工具 PHP最低版本要求5.3.2,需要允许o ...
- PHP依赖管理工具Composer入门
作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://weizhifeng.net/manage-php-dependency-wi ...
- Golang modules包依赖管理工具
初始化 执行go mod init module-name,其中module-name为包名字,执行完后会生成go.mod文件,如下 module module-name go 1.13 包管理 使 ...
- Golang 包依赖管理工具
1.godep:https://studygolang.com/articles/9877 2.dep:https://studygolang.com/articles/10589 3.glide:h ...
- Composer : php依赖管理工具
原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...
- composer php依赖管理工具
#composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...
随机推荐
- 7-14 电话聊天狂人(25 分)(Hash表基本操作)
7-14 电话聊天狂人(25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105),为通话记录条数.随后N行,每行给出一条通话记录.简单 ...
- spark streaming基于Kafka的开发
spark streaming使用Kafka数据源进行数据处理,本文侧重讲述实践使用. 一.基于receiver的方式 在使用receiver的时候,如果receiver和partition分配不当, ...
- Error connecting to database: No such file or directory
标签:Error connecting to database: No such file or directory 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明 ...
- java服务器图片压缩的几种方式及效率比较
以下是测试了三种图片压缩方式,通过测试发现使用jdk的ImageIO压缩时间更短,使用Google的thumbnailator更简单,但是thumbnailator在GitHub上的源码已经停止维护了 ...
- oracle索引简单使用
--查询表索引 select * from user_ind_columns where table_name = upper('HY_PROJECT') and column_name = uppe ...
- 在虚拟机搭建JStrom
原文:http://blog.csdn.net/u014134180/article/details/51810311 一 安装步骤 二 搭建Zookeeper集群 1 ZooKeeper 单机安装与 ...
- tornado的http服务器实现
使用tornado实现的一个简单http服务器:只需要定义自己的处理方法,其他的东西全部交给tornado完成. #coding:utf-8 import tornado.httpserver imp ...
- ISkyShop B2B2C 商城系统V1.0正式版隆重公布
ISkyShop核心开发团队结合7年电商开发经验,历经1年多时间的设计研发,于2014年6月12日隆重推出ISkyShop B2B2C 商城系统V1.0,B2B2C商城系统是ISkyShop独立自主研 ...
- 使用OpenCV读、操作、写图像并与bash合作对某个文件夹下全部图像进行相似处理
我门要对某个文件夹下全部图像文件进行统一处理,假设图像的数量过多.那么手动地一张张处理就会显得有些麻烦.本文使用OpenCV和bash来完毕我们指定的任务. 任务 将文件夹A下的全部统一格式的jpg图 ...
- Tcl脚本调用高层API实现仪表使用和主机创建配置的自己主动化測试用例
#设置Chassis的基本參数,包含IP地址.port的数量等等 set chassisAddr 10.132.238.190 set islot 1 set portList {11 12} ;#端 ...