composer介绍
安装:
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/composermac的安装
mac自带有curl和PHP
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --versionwindows安装
镜像源
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.packagistcomposer config --unset repos.packagistcomposer 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 Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');因为composer有psr4的autoload所以,可以直接使用命名空间来导入,require安装的包都会自动加入到autoloader
添加自定义psr4的autoload,把命名空间
首先,在composer.json文件中,增加一级,autoload,指定命名空间名,以及对应的路径
{
"require": {
"monolog/monolog": "1.2.*"
},
"autoload": {
"psr-4": {"nsname\\": "file_dir"}
}
}上面的例子注册一个nsname的命名空间,到根目录(与 vendor 文件夹同级)的file_dir下
file_dir/Foo.php 文件应该包含 nsname\Foo 类。添加了auto字段,需要再次执行,composer install命令,会重新生成vendor\composer\autoloader_*.php
项目git的源代码管理
最简的仅需要上传composer.lock和composer.json,忽略vendor目录,
生成环境,git clone新项目后,直接在根目录下运行,composer install,即可
git的.gitignore文件书写
/.idea
/.vscode
/vendor
*.log
.envcomposer更新命令对比
composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
# 只安装 require 中定义的依赖,而不安装 require-dev 中定义的依赖
composer install --no-devcomposer update - 从 composer.json 安装所有的最新扩展包和依赖;
composer update vendor/package - 从 composer.json 或者对应包的配置,把指定包更新到最新;
composer require new/package - 添加安装 new/package, 可以指定版本,如:composer require geoip2/geoip2:~2.0
compser其他命令
composer remove monolog/monologcomposer search monologComposer参数
包相关说明