原始时代

我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了

总结如下

  • 代码混乱

  • 规范不统一

  • 没有后续统一更新等管理

Composer侠应运而生

composer直到如今 已有5个年头了,也是直到今年才有了第一个稳定版本1.0,以前都是alpha版本了,其实composer的发展 也和 PHP-FIG (后续会专门解释的)的发展有很大关系

composer是php新时代的依赖管理利器,就像python的pip,nodejs的npm,javascript的bower等。你可以在自己的项目申明所依赖的外部库,composer可以帮你安装这些

composer解决如下问题

  • 你有一个项目需要依赖若干个库

  • 其中一个库依赖其他库

  • 找出你需要的版本进行安装

安装Composer

要求

composer 要求 php 不低于 5.3.2+

命令

curl -sS https://getcomposer.org/installer | php

过程如下

$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading 1.2.1... Composer successfully installed to: /home/www/php/test/helloworld/composer.phar
Use it: php composer.phar $ ll
-rwxr-xr-x 1 501 dialout 1704783 Oct 10 23:20 composer.phar*

可以看到执行上述命令之后 会将composer.phar文件下载在当前目录。phar是php的压缩格式,可以直接在命令行运行该文件

全局安装命令

$ mv composer.phar /usr/local/bin/composer

Composer基本使用

composer.json

要在你的项目和库使用composer,那么composer.json就是必要文件,可以自行新建。内容是JSON格式非常容易编写

配置国内镜像源

将如下代码也放在composer.json中去

"repositories": {
  "packagist": {
    "type": "composer",
    "url": "https://packagist.phpcomposer.com"
  }
}

申明依赖 require

例如我的项目依赖phpexcel,申明如下

{
  "require":{
    "phpoffice/phpexcel": "1.8.0"
  }
}

把上面两步代码合并起来,composer代码如下

{
  "require":{
    "phpoffice/phpexcel": "1.8.0"
  },
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://packagist.phpcomposer.com"
    }
  }
}

安装依赖

php composer.phar install

使用国内镜像源安装很快的(会自动生成一个autoload.php文件),安装完结构如下

$ tree -L 2
|-- composer.json
|-- composer.lock
|-- composer.phar
|-- index.php
|-- vendor
    |-- autoload.php
    |-- composer
    |-- phpoffice

自动加载

在index.php加入一行 代码就可以直接使用库了

require 'vendor/autoload.php'

Composer高级特性

安装单个库

php composer.phar require phpoffice/phpexcel
php composer.phar require phpoffice/phpexcel:dev-master

更新单个库

有时间想更新某一个库,不想更新依赖,很简单

php composer.phar update phpoffice/phpexcel

直接安装库 不用编辑composer.json

你要是觉得没添加一个库就要修改composer.json麻烦,可以直接使用 require 命令

php composer.phar require monolog/monolog  #日志操作库

结构如下

$ tree -L 2
|-- composer.json
|-- composer.lock
|-- composer.phar
|-- index.php
|-- README.MD
 -- vendor
    |-- autoload.php
    |-- composer
    |-- monolog
    |-- phpoffice
    |-- psr

移除扩展

php composer.phar remove sinergi/browser-detector

生产环境优化

当你把项目部署到线上环境,不要忘了执行如下代码优化自动加载,可以提高20%左右的性能

php composer.phar dump-autoload --optimize

参考资源

博文演示代码: https://github.com/apanly/composer_helloworld

Pachagist官网地址:https://packagist.org/

PHP-FIG: http://www.php-fig.org/

Composer中文网: http://www.phpcomposer.com/

Json官网:http://json.org/

原文地址:Composer : php依赖管理工具
标签:composer   psr   require   install   pear   phpexcel

智能推荐

Composer : php依赖管理工具的更多相关文章

  1. composer php依赖管理工具

    #composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...

  2. Composer PHP 依赖管理工具

    composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 依赖管理 ...

  3. PHP的依赖管理工具----composer

    安装Composer 参考:https://getcomposer.org/doc/01-basic-usage.md composer 是PHP依赖管理工具 PHP最低版本要求5.3.2,需要允许o ...

  4. 有用PHP依赖管理工具Composer新手教程

    PHP依赖管理工具Composer新手教程 Composer 是 PHP 的一个依赖管理工具.它同意你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 依赖管理 Composer 不是一个包管理 ...

  5. PHP依赖管理工具Composer入门

    作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://weizhifeng.net/manage-php-dependency-wi ...

  6. Go 包依赖管理工具 —— govendor

    govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...

  7. PHP之Composer类库依赖管理神器

    Composer中文版说明见:https://github.com/kaka987/Composer-zh Composer 是PHP的类包依赖管理工具,用它可以轻松的引用第三方类包,类似于node的 ...

  8. yarn依赖管理工具的使用

    Yarn是Facebook发布的一款依赖管理工具,它比npm更快.更高效. 与NPM命令对照 npm install => yarn install npm install --save [pa ...

  9. Golang依赖管理工具:glide从入门到精通使用

    这是一个创建于 2017-07-22 05:33:09 的文章,其中的信息可能已经有所发展或是发生改变. 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰 ...

随机推荐

  1. Codeforces 580D Kefa and Dishes(状压DP)

    题目大概说要吃掉n个食物里m个,吃掉各个食物都会得到一定的满意度,有些食物如果在某些食物之后吃还会增加满意度,问怎么吃满意度最高. dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大 ...

  2. 斑点检测(LoG,DoG)(下)

    斑点检测(LoG,DoG)(下) LoG, DoG, 尺度归一化 上篇文章斑点检测(LoG,DoG)(上)介绍了基于二阶导数过零点的边缘检测方法,现在我们要探讨的是斑点检测.在边缘检测中,寻找的是二阶 ...

  3. mysql 连接超时解决

    修改my.cnf文件即可. ************************************ 在/etc/my.cnf下添加如下两行代码: wait_timeout=31536000inter ...

  4. Android ListView item项 显示动画

    (1)使用LayoutAnimation 所谓的布局动画,其实就是为ViewGroup添加显示动画效果,主要用过LayoutAnimationController来控制实现.LayoutAnimati ...

  5. Codeforce - Street Lamps

    Bahosain is walking in a street of N blocks. Each block is either empty or has one lamp. If there is ...

  6. [题解+总结]动态规划大合集II

    1.前言 大合集总共14道题,出自江哥之手(这就没什么好戏了),做得让人花枝乱颤.虽说大部分是NOIP难度,也有简单的几道题目,但是还是做的很辛苦,有几道题几乎没思路,下面一道道边看边分析一下. 2. ...

  7. [BZOJ2797][Poi2012]Squarks

    2797: [Poi2012]Squarks Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 211  Solved: 89[Submit][Status ...

  8. 【BZOJ1051】1051: [HAOI2006]受欢迎的牛 tarjan求强连通分量+缩点

    Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...

  9. SQL Server2008清空日志文件

    USE[master] GO ALTER DATABASE mydbname SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE mydbname S ...

  10. filter,orderBy等过滤器

    filter用法比较灵活(也增加了较高的复杂度),单独列出. 基本的用法: <input type="text" class="search" ng-mo ...