若是你知道yum
、apt-get
、npm
、bower
等命令中的一种或者多种,那么,你也能很快知道composer
是什么了。没错,它就是PHP里快速安装类库的。平时,咱们安装一个PHP类库,须要搜索->下载
;使用composer
,咱们只要知道包名,直接composer insatll
就能够了。php
PHP 语言自己就带有强大的网络功能、文件管理功能和丰富的系统 API,Composer 也只是一段 PHP 脚本而已。html
引自Composer中文网的描述:laravel
是 PHP 用来管理依赖(dependency)关系的工具。你能够在本身的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。git
安装PHP包、依赖库。github
示例:npm
$ composer require monolog/monolog
这是在安装monolog
库。json
$ composer create-project laravel/laravel learnlaravel5 5.0.22
这是在安装laravel
框架并建立项目。windows
YII
框架也是经过composer
安装的。安全
经过过composer
,咱们可使用大量的第三方库,而无需本身造轮子。优秀项目示例:bash
你能够在 https://packagist.org/ 找到你须要的库。甚至你能够提交本身写的优秀的库到该平台里供你们使用。
若是不会composer
,流行的laravel
、yii
框架安装都成为问题,更不用谈学习了;不少优秀的轮子你没法使用。因此,推荐phper必须学会composer。
首先得安装Composer命令行工具。因为国内互联网某种神秘的力量让Composer变得愈来愈不稳定,可能致使安装不了。若是没法按步骤安装,本小节最后我会提供国内下载地址。
下面是安装命令(来自https://getcomposer.org/download/):
php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === 'fd26ce67e3b237fffd5e5544b45b0d92c41a4afe3e3f778e942e43ce6be197b9cdc7c251dcde6e2a52297ea269370680') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }" php composer-setup.php php -r "unlink('composer-setup.php');"
按顺序执行便可。安装好后提示:
All settings correct for using Composer Downloading... Composer successfully installed to: /root/composer/composer.phar Use it: php composer.phar
操做执行结束,会在当前目录下生成composer.phar
文件。
在Linux里,composer.phar
是可执行程序。
例如,咱们可使用php composer.phar update
执行更新操做。
全局安装:
mv composer.phar /usr/local/bin/composer
以后,就能够直接使用composer install
安装包了。不过一般状况下只需将composer.phar
的位置加入到PATH
就能够,不必定要全局安装。
首先去https://getcomposer.org/download/下载https://getcomposer.org/download/1.2.0/composer.phar,建议下载最新版本的:
Latest Snapshot
1.2.0 (2016-07-18)
1.2.0-RC (2016-07-04)
1.1.3 (2016-06-26)
1.1.2 (2016-05-31)
下载后放到php安装位置里,而后
Linux:
cp composer.phar /usr/bin/composer chmod +x /usr/bin/composer
Windows:
新建:
composer.bat #windows用 composer #git-bash用
composer.bat
@ECHO OFF php "%~dp0composer.phar" %*
composer
#!/bin/sh dir=$(d=$(dirname "$0"); cd "$d" && pwd) # see if we are running in cygwin by checking for cygpath program if command -v 'cygpath' >/dev/null 2>&1; then # cygwin paths start with /cygdrive/ which will break windows PHP, # so we need to translate the dir path to windows format. However # we could be using cygwin PHP which does not require this, so we # test if the path to PHP starts with /cygdrive/ rather than /usr/bin. if [[ $(which php) == /cygdrive/* ]]; then dir=$(cygpath -m $dir); fi fi dir=$(echo $dir | sed 's/ /\ /g') php "${dir}/composer.phar" $*
若是上述连接下载不了,请使用: http://pan.baidu.com/s/1gfmSIbD 密码: f4vr 。
我还专门建了github仓库:https://github.com/52fhy/composer。
Linux须要给composer可执行权限。以后就可使用composer了:
$ composer ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.2.0 2016-07-19 01:28:52 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: about Short information about Composer archive Create an archive of this composer package browse Opens the package's repository URL or homepage in your browser. clear-cache Clears composer's internal package cache. clearcache Clears composer's internal package cache. config Set config options create-project Create new project from a package into given directory. depends Shows which packages cause the given package to be installed diagnose Diagnoses the system to identify common errors. dump-autoload Dumps the autoloader dumpautoload Dumps the autoloader exec Execute a vendored binary/script global Allows running commands in the global composer dir ($COMPOSER_HOME). help Displays help for a command home Opens the package's repository URL or homepage in your browser. info Show information about packages init Creates a basic composer.json file in current directory. install Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json. licenses Show information about licenses of dependencies list Lists commands outdated Shows a list of installed packages that have updates available, including their latest version. prohibits Shows which packages prevent the given package from being installed remove Removes a package from the require or require-dev require Adds required packages to your composer.json and installs them run-script Run the scripts defined in composer.json. search Search for packages self-update Updates composer.phar to the latest version. selfupdate Updates composer.phar to the latest version. show Show information about packages status Show a list of locally modified packages suggests Show package suggestions update Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file. validate Validates a composer.json and composer.lock why Shows which packages cause the given package to be installed why-not Shows which packages prevent the given package from being installed
在合适的地方新建一个文件夹,命名为 MFFC(My First Framework based on Composer),在文件夹下新建文件 composer.json
:
{
"require": {
}
}
命令行切换到 MFFC 目录下,运行:
composer update
就会在该目录下生成一个vendor
文件夹。之后全部的第三扩展包都会安装在这里。
里面的代码你们能够看看。
如下以monolog
为例:
在项目目录下建立一个composer.json
文件,指明依赖,好比,你的项目依赖 monolog:
{ "require": { "monolog/monolog": "1.2.*" } }
若是不须要使用https
,能够这么写,以解决有时候由于https形成的问题:
{ "require": { "monolog/monolog": "1.2.*" }, "config": { "secure-http": false } }
安装依赖很是简单,只需在项目目录下运行:
composer install
若是没有全局安装的话,则运行:
php composer.phar install
更新所有的包(谨慎使用):
composer update
注意:使用composer install
或者composer update
命令将会更新全部的扩展包,项目中使用需谨慎!!!
若只安装指定的包推荐在命令行使用:
composer require monolog/monolog
进行安装。
若是须要指定版本:
composer require "monolog/monolog:1.2.*"
更新某个包:
composer update monolog/monolog
移除某个包:
composer remove monolog/monolog
若是手动更新了composer.json须要更新autoload:
composer dump-autoload
精确版本:示例: 1.0.2
。
范围:使用比较操做符你能够指定包的范围。这些操做符包括:>,>=,<,<=,!=。你能够定义多个范围,使用空格 或者逗号,表示逻辑上的与,使用双竖线||表示逻辑上的或。其中与的优先级会大于或。示例:
>=1.0 >=1.0 <2.0 >=1.0 <1.1 || >=1.2
范围(使用连字符):
例子:1.0 - 2.0
,等同于>=1.0.0 <2.1
(2.0至关于2.0.*)。
通配符:可使用通配符去定义版本。1.0.*
至关于>=1.0 <1.1
。
例子:1.0.*
下一个重要版本操做符:使用波浪号~
。示例:
~1.2
至关于>=1.2 <2.0.0
,而~1.2.3
至关于>=1.2.3 <1.3.0
。
折音号^
:例如,^1.2.3
至关于>=1.2.3 <2.0.0
,由于在2.0版本前的版本应该都没有兼容性的问题。而对于1.0以前的版本,这种约束方式也考虑到了安全问题,例如^0.3
会被看成>=0.3.0 <0.4.0
对待。
Composer提供了自动加载的特性,只需在你的代码的初始化部分中加入下面一行:
require 'vendor/autoload.php';
{ "require": { "php": ">=5.4.0", "illuminate/database": "*", "monolog/monolog": "1.2.*" }, "config": { "secure-http": false }, "autoload": { "classmap": [ "app/models" ], "files": [ "vendor/yjc/src/Alipay/autoload.php" ], "psr-4": { "Yjc\\Sms\\": "vendor/yjc/src/Sms" } } }
autoload
部分指定自动加载的文件夹,每次里面的文件有新增,使用composer dump-autoload
便可。
详见:http://docs.phpcomposer.com/03-cli.html#dump-autoload
composer list 列出全部可用的命令 composer init 初始化composer.json文件(就不劳咱们本身费力建立啦),会要求输入一些信息来描述咱们当前的项目,还会要求输入依赖包 composer install 读取composer.json内容,解析依赖关系,安装依赖包到vendor目录下 composer update 更新最新的依赖关系到compsoer.lock文件,解析最新的依赖关系而且写入composer.lock文件 composer search packagename 搜索包,packagename替换为你想查找的包名称 composer require packagename 添加对packagename的依赖,packagename可修改成你想要的包名称 composer show packagename composer self-update 更新 composer.phar文件自身 composer dump-autoload --optimize 优化一下自动加载 composer command --help 以上全部命令均可以添加 --help选项查看帮助信息
更多可用命令,能够在命令行输入composer
进行查看。
packagist.org是Composer的仓库,不少著名的PHP库都能在其中找到。你也能够提交你本身的做品。
当你安装完Composer后,使用时,却发现不能下载包,或者很慢,这是一个『众所周知』的缘由。
因此,咱们使用国内的镜像站点进行代替,经常使用方法有两种:
一、修改全局配置:全局配置的文件通常放在C:\Users\XXX\AppData\Roaming\Composer\config.json
,例如C:\Users\YJC\AppData\Roaming\Composer\config.json
。
(这里以windows路径为例)。能够经过命令composer config -l
查看配置,其中[home]
为配置所在目录。config.json
即为配置文件。
{ "config": { }, "repositories": [ {"type": "composer", "url": "http://pkg.phpcomposer.com/repo/packagist/"}, {"packagist": false} ] }
或者命令行直接修改:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
二、修改当前配置:即项目当前的composer.json文件;
{ "require": { "noahbuscher/macaw": "dev-master" }, "repositories": [ { "packagist": false }, { "type": "composer", "url": "http://packagist.cn" } ] }
三、常见镜像地址:
https://packagist.org 国外的
http://packagist.phpcomposer.com 中国全量镜像
overtrue/wechat 让微信开发更简单!
thenbsp/wechat
catfan/medoo
illuminate/database
psr/log
monolog/monolog
symfony/event-dispatcher
phpunit/phpunit
phpunit/php-timer
michelf/php-markdown markdown 文档解析
intervention/image 图片处理
mytharcher/alipay-php-sdk
更多查看:https://packagist.org/explore/popular
大概步骤以下:
在github上建立一个项目(项目名称能够随意)
编写composer.json
copy代码文件并修改命名空间
在https://packagist.org/上递交本身的包
设置github的hook
编写composer.json
先看一个示例:
{ "name": "jenner/message_queue", "description": "php message queue wrapper", "license": "MIT", "keywords": ["message queue"], "version": "1.0.0", "authors": [ { "name": "Jenner", "email": "hypxm@qq.com" } ], "require": { "php": ">=5.3.0" }, "autoload": { "psr-0": { "Jenner\\Zebra\\MessageQueue": "src/" } } }
须要注意的几个字段说明以下:
name:包名称,递交时packagist会检测报名字是否合法。必须是一个/分隔的字符串。当别人引入你的包时,vendor下会自动建立这个目录。例如org/package
包,则会在vender下建立org/package目录。
autoload:包的加载方式,具体加载方式能够参考composer中文网说明。这里使用的是psr-0标准加载方式。composer会在src目录下根据命名空间执行自动加载。
Framework Interoperability Group(框架可互用性小组),简称 FIG,成立于 2009 年。FIG 最初由几位知名 PHP 框架开发者发起,在吸纳了许多优秀的大脑和强健的体魄后,提出了 PSR-0 到 PSR-4 五套 PHP 非官方规范:
以后,在此标准之上,Composer 横空出世!Composer 利用 PSR-0 和 PSR-4 以及 PHP5.3 的命名空间构造了一个繁荣的 PHP 生态系统。Composer 相似著名的 npm 和 RubyGems,给海量 PHP 包提供了一个异常方便的协做通道,Composer Hub 地址:https://packagist.org/。Composer 中文网站:http://www.phpcomposer.com/。
目前 PHP 界风头正劲的 Laravel 和 Symfony 均直接基于 Composer,你们耳熟能详著名框架 CI 和 Yii 的正开发版本 CodeIgniter 3 和 Yii 2 也都基于 Composer(更新:北京时间2014年10月13日 Yii 2 已经发布)。Composer 就是 PHP 框架的将来,有了它,让 CI 的路由和 Laravel 的 Eloquent ORM 协做就会变的很是简单。
一、Windows下出现:Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist 进入C:\Users\YJC\AppData\Roaming\Composer目录,删除vendor目录。