composer是什么
composer 是 PHP 的一个依赖管理工具。
它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。在相当长的一段时间内,如果应用依赖于第三方库,那么最简单的方式是,搜索下这些库(比如PHPExcel),找到下载地址,下载个zip包,然后解压到相应目录下,根据文档引入相应的文件。
如果使用Composer,就可以更加自动和优雅地完成这个过程。
composer全局安装
linux或mac下,在命令行任意地方输入:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
完成后,继续在命令行输入composer然后回车,会输出以下内容即为成功。
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
由于composer软件的源在国外,国内网络环境可能下载比较慢或者根本无法下载,这时可以直接找@康师傅获取。
依赖管理
此部分建议直接参考:http://blog.youkuaiyun.com/hel12he/article/details/46503875
在完成composer工具的安装后,就可以通过组件化的方式创建项目了。
composer官网地址提供了组建资源库“http://packagist.org/”,
在资源库可以搜索相关的资源包,如需搜索一个日志的资源包,
可以通过关键字“log”来搜索。
假设项目中选择使用一个名为monolog组建来完成日志功能,
则需要在项目根目录下创建一个名为composer.json的文件,
在该文件中记录所需要的组件名及版本,相应的格式如下:
{
"name":"qudian/model-test",
"require":{
"monolog/monolog":"1.0.*"
}
}
这里面包含两个标签,其中“name”标签表示本项目的名称,“qudian”是公司名,而“model-test”是项目名称。
“1.0.*”为版本号,这里的版本号可以通过几种方式约束,分别是:
确切版本号(如 1.1.1)
范围版本号(如>=1.1、<2.3等)
通配符版本号(如1.0.*,用于匹配>=1.0 并且 <1.1的版本)
赋值运算版本号(如~1.0,用于匹配>=1.0 并且 <2.0的版本)
创建完composer.json文件后,在命令行中切换到项目根目录,
然后输入命令composer install
,接着composer会检查composer.json文件中的组件名称及版本,将它下载到当前目录的vender文件夹下。
在完成组件下载后,会在当前目录创建一个名为composer.lock的锁文件,该文件将记录当前项目依赖组件的确切版本号,当执行composer install
命令时会首先会查看该文件中的版本,如果存在则下载该文件中指定的版本。
如果某组件有了更新的版本,需要更新组件,可以通过composer update
命令实现。
自动加载
通过composer的install命令出了可以下载组件以外,还会在vender目录下提供一个自动加载文件,只需要通过require 'vender/autoload.php;'
语句引入这个文件,在使用下载的组件时就可以实现自动加载了。
如上一小节的示例中,下载了monolog组件,
就可以通过$myLog = new \monolog\Logger('qudian')
语句直接使用组件中的类库,而autoload文件会自动加载相应的类文件。
实现文件自动加载需要有相应的规范进行约束,其中包括PSR-0、PSR-4、classmap、files四种规范形式,其中PSR-4是目前推荐使用的规范。
这四种规范形式本质上是定义了一个命名空间到实际文件的映射关系,通过这个映射关系,可以利用命名空间类精确定位到相应文件的具体路径,进而实现“autoload”自动加载功能。
composer命令行简介
在前面的介绍中已经接触到一些composer命令,下表对常用的命令进行了简单的归纳,如果需要更加详细的了解可以查看composer官网。
命令 | 功能 |
---|---|
composer list | 获取帮助信息 |
composer init | 以交互的方式填写composer.json文件的信息 |
composer install | 从当前目录读取composer.json文件,处理依赖关系,并安装到vender目录下 |
composer update | 获取依赖的最新版本,升级composer.lock文件 |
composer require | 添加新的依赖包到composer.json文件这种并执行更新 |
composer search | 在当前项目中搜索依赖包 |
composer show | 列举所有可用的资源包 |
composer validate | 检测composer.json文件是否有效 |
composer self-update | 将composer工具更新到最新版本 |
composer create-project | 基础composer创建一个新的目录 |
composer dump-autoload | 在添加新的类和目录映射时更新autoloader |