浅谈Composer包管理工具

自从php5.3引入了命名空间后composer开始登上舞台,通过composer来管理php包,开发起来事半功倍。

一、什么是composer

下面是官方的解释

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

这个是我的理解

composer 是一个php的包管理工具。顾名思义就是我们可以下载别人写好的php包用到自己的项目中来。从而提高代码的开发效率和质量,降低了开发成本。
这里有composer所有的php包 我们可以在这里查看所需要的php包。正所谓不重复发明轮子。那么我们用别人发明的轮子去造自己的汽车岂不更好?

二、composer的安装

Linux 下的安装

说到安装composer 就是一个坑。下载就要下载好几遍才能把composer下载下来。因为composer的源在国外。所以下载起来会很慢很慢。

官方的安装条命令可能行不通

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

我们来换个思路,通过浏览器下载这个地址 https://getcomposer.org/installer 只要把把这个文件下载下来就ok了

剩下就是把这个文件移动到 bin目录下就ok了

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

Mac 操作系统也可以按照上面的方法安装(unix 的内核)

还可以使用homebrew方法安装

brew update
brew tap josegonzalez/homebrew-php
brew tap homebrew/versions
brew install php55-intl
brew install josegonzalez/php/composer

window 操作系统安装

下载这个 https://getcomposer.org/Composer-Setup.exe 安装完成就好。因为你要在任何目录下直接使用 composer 命令,所以我们需要把配置环境变量。 具体配置方法参考这里 只需要把composer安装目录放到环境变量里就好

三、使用 comoposer

  • 创建composer.json 文件格式如下 (官方文档传送门

    {
        // 在require 的对象下增加想要的php包
        "require": {
            "monolog/monolog": "1.0.*"   // 这里添加要引人的包文件 格式为  "命名空间/包名":"包版本号"
        }
    
        //自动加载
        "autoload": {
            "psr-4": {"Acme\\": "src/"}  //使用psr-4 的规范去加载 可以自定义一些目录来管理自己的代码哦
        }
    }
    
  • 安装composer.json配置文件中的 php包 安装完成后会生成一个 composer.lock 的锁文件 这样不能用下面的方法了。

    composer install 
    
  • 不编辑composer.json 的情况下安装包

    composer require "foo/bar:1.0.0"
    
  • 更新 composer.json 中的各个库

    composer update
    
  • 更新单个库

    composer update foo/bar
    

四、composer的常用命令

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 command --help //以上所有命令都可以添加 --help选项查看帮助信息

五、一些问题

如果你在中国使用composer 可以好多想要的包下载特慢。 慢就对了 好多优秀的php包的源都在国外。中国有一堵墙把这些包隔离在外。如何解决这问题呢?有好几个出路可供选择参考

  • 去国外 (不太现实)

  • 翻墙 (如果你有这方面的技术可以用这个方法)

  • 多下载几遍(一般多试几次就可以了,失败为成功的母亲)

  • 使用中国composer的中国镜像(个人觉得可能不太安全、包的更新可能不及时)

composer config -g repositories.packagist composer http://packagist.phpcomposer.com