-
composer介绍
- Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。
- Composer 默认情况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。
- Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。
-
安装:
-
linux安装
-
首先要有php和curl,linux需要自己安装
-
# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" # php composer-setup.php # mv composer.phar /usr/local/bin/composer
-
-
mac的安装
-
mac自带有curl和PHP
-
$ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer $ composer --version
-
-
windows安装
- Wondows 平台上,我们只需要下载 Composer-Setup.exe 后,一步步安装即可。
- 安装过程中,会要求指定Php的安装目录,找到php.exe
- 安装完毕后,在cmd中输入,composer --version,检查是否安装成功
-
-
镜像源
- 默认的镜像源在国外,国内安装很慢,所以需要更换安装源
- 常用安装源
- 英文镜像:https://packagist.org
- 中文镜像:https://pkg.phpcomposer.com/
- composer https://packagist.org
- phpcomposer https://packagist.phpcomposer.com
- aliyun https://mirrors.aliyun.com/composer
- tencent https://mirrors.cloud.tencent.com/composer
- huawei https://mirrors.huaweicloud.com/repository/php
- laravel-china https://packagist.laravel-china.org
- cnpkg https://php.cnpkg.org
- sjtug https://packagist.mirrors.sjtug.sjtu.edu.cn
- 更换镜像源
- 全局更换,
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 项目中更换,先进入项目目录,再执行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
- 全局更换,
- 取消镜像源
- 全局取消
composer config -g --unset repos.packagist
- 项目中取消,先进入项目目录,再执行
composer config --unset repos.packagist
- 全局取消
- 第三镜像源管理工具crm, 全局安装:
composer global require slince/composer-registry-manager
-
更新composer
- 执行命令
composer selfupdate
- 执行命令
-
项目中使用composer
-
在项目根目录下,创建composer.json文件,并添加相关依赖信息,例如如下信息
{ "require": { "monolog/monolog": "1.2.*" } }
-
先拉取的项目,在项目根目录执行,composer install,将自动在vender目录下下载相关依赖的包,并生成composer.lock文件记录详细版本信息。
-
原项目,新添加扩展包使用,composer require 包名:版本 ,
composer require foo/bar:1.0.0
-
在项目中导入composer的引用,就可以调用相关的类和方法,
-
require 'vendor/autoload.php';
-
$log = new MonologLogger('name'); $log->pushHandler(new MonologHandlerStreamHandler('app.log', MonologLogger::WARNING)); $log->addWarning('Foo');
-
-
因为composer有psr4的autoload所以,可以直接使用命名空间来导入,require安装的包都会自动加入到autoloader
- 在vendor/composer/目录下
-
添加自定义psr4的autoload,把命名空间
-
首先,在composer.json文件中,增加一级,autoload,指定命名空间名,以及对应的路径
{ "require": { "monolog/monolog": "1.2.*" }, "autoload": { "psr-4": {"nsname\": "file_dir"} } }
-
上面的例子注册一个nsname的命名空间,到根目录(与
vendor
文件夹同级)的file_dir下- 例如
file_dir/Foo.php
文件应该包含nsnameFoo
类。
- 例如
-
添加了auto字段,需要再次执行,composer install命令,会重新生成vendorcomposerautoloader_*.php
-
-
项目git的源代码管理
-
最简的仅需要上传composer.lock和composer.json,忽略vendor目录,
-
生成环境,git clone新项目后,直接在根目录下运行,composer install,即可
-
git的.gitignore文件书写
/.idea /.vscode /vendor *.log .env
-
-
-
composer更新命令对比
-
composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
# 只安装 require 中定义的依赖,而不安装 require-dev 中定义的依赖 composer install --no-dev
-
composer update - 从 composer.json 安装所有的最新扩展包和依赖;
-
composer update vendor/package - 从 composer.json 或者对应包的配置,把指定包更新到最新;
-
composer require new/package - 添加安装 new/package, 可以指定版本,如:composer require geoip2/geoip2:~2.0
-
-
compser其他命令
- remove命令,移除一个包,
composer remove monolog/monolog
- search命令,显示包的信息,
composer search monolog
- show命令,显示当前项目使用包的信息
- create-project 从现有的包中新建项目
- config命令,查看配置信息
- --global (-g) 查看全局
- --list (-l): 查看当前配置选项的列表。当存在 --global 参数时,将会显示全局配置选项的列表。
- run-script 用来执行composer.json文件中,script部分的代码
- dump-autoload 根据composer.json文件来生成vendor文件夹及自动加载文件
- remove命令,移除一个包,
-
Composer参数
- --perfer-dist 强制使用压缩包,并缓存到本地。下次再安装就会从本地加载,大大加速安装速度。但她没有保留.git文件夹,没有版本信息。适合基于这个包进行开发。
- --perfer-source 会从github上克隆源代码,不会在本地缓存。但它保留了.git文件夹,从而可以实现版本控制。适合用于修改源代码。
-
包相关说明
- 包名称:包名成的构成,供应商/功能名,来去确定包名,降低包名冲突的几率
- 包版本:可以明确具体的版本1.0.2,通配符1.0.*,指定范围,>=1.0,<2.0,赋值运行~1.2相当于>=1.2&&<2.0
- 包的稳定版本和开发版,默认是stable,如何需要开发版,在版本号后面加@dev。版本稳定排序dev,alpha,beta,RC,stable