Composer 是 PHP 的 一个依赖管理工具。它容许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。主要解决的问题:有很是多优秀的开源库,直接使用能够大大节约开发的 时间,可是在标准的库里面,又没有这些功能,因而在运行他们对应的系统的时候,须要去下载相关的库。(由于你须要跨平台的移植性,因此就须要对所引用的库 进行说明与管理)这样就出现了composer。 php
composer的安装: css
1.curl -sS https://getcomposer.org/installer | php laravel
下载Composer 的二进制文件,是一个 PHAR 包(PHP 的归档) 程序员
curl -sS(s是指静默安装,S是指出现错误就报错)若是没有这俩个参数,会显示下载安装进度 json
可是国内安装composer的时候会常常失败:(以下,受制于国内网络的限制) 网络
一个比较好的补充办法: app
curl -sS http://install.phpcomposer.com/installer | php composer
这个是国内的版本。能够看到很快就会下载好 dom
2.下载好了composer.phar以后,咱们没法直接用composer命令,须要让其在全局进行使用,须要将其移动到/usr/local/bin/ 文件目录下面(而后咱们能够本身作一个命名) curl
Mv composer.phar /usr/local/bin/composer
这样咱们就能够全局使用了(在命令行里面输入composer就能够全局使用)
3.安装完成以后:(须要不按期的进行更新依赖库,才能拿到最新的依赖库)
composer selfupdate
Composer的几个相关概念:
1.phar包:Phar是PHP Archive缩写,将php文件归档到一个文件包。将一个模块的文件打包成一个phar,这样方便模块总体迁移,只需将phar文件移动过去,其余环境中include便可使用。
2.查看composer包 会发现该phar包 的头部是 #!/usr/bin/env php(该语句代表该命令是用环境里的php进行运行)
3.使用对应项目的composer.json 很是简单,在其对应的文件目录下面,composer install
即完成了依赖库的安装。
Composer的写法:(通常依赖库的文件名叫composer.json)下面以Laravel最新版本的composer.json为例子进行说明:
{
//包的名字
"name": "laravel/laravel",
//包的简单描述
"description": "The Laravel Framework.",
//包的关键词
"keywords": ["framework", "laravel"],
//许可证,确保其余程序员在使用的时候,没有法律上的问题
"license": "MIT",
//包的类型,默认为 library。这里是项目
"type": "project",
//须要的依赖条件
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*"
},
//列出开发这个包(或跑测试等等)所依赖的包。在使用 install 命令时,只有带上 “–dev” 参数才能安装 dev 包。在使用 update 命令时,带上 “–no-dev” 则不更新。
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*"
},
//提供给 PHP autoloader 的自动加载映射
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
//测试环境下的自动映射
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
//针对项目的一些配置。
"config": {
"preferred-install": "dist"
}
}