PHP依赖管理之Composer

Composer 概述

  • 概述

    • Composer是一个新的安装包管理工具,服务于PHP生态系统
    • 它实际上包含了两个部分:Composer和Packagist
      • Composer的使命就是帮你为项目自动安装所依赖的开发包
      • Packagist是Composer的默认的开发包仓库
  • 其他语言的包管理器

    • Java 有 Maven
    • Python 有 pip
    • Ruby 有 gem
    • Nodejs 有 npm

安装 Composer

  • 环境

    • Composer需要PHP 5.3.2+才能运行
    • 通常情况下只需将composer.phar的位置加入到PATH环境变量就可以,不一定要全局安装
  • 国内镜像配置

    • composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • Windows平台

    • 下载安装 https://getcomposer.org/Composer-Setup.exe
  • Linux平台

    • 命令行 $ curl -sS https://getcomposer.org/installer | php
      • 这个命令会将composer.phar下载到当前目录
      • PHAR(PHP 压缩包)是一个压缩格式,可以在命令行下直接运行
    • 命令行 $ curl -sS https://getcomposer.org/installer | php -- --install-dir=bin
      • 将Composer安装到指定的目录
    • 全局安装
      • $ curl -sS https://getcomposer.org/installer | php
      • $ mv composer.phar /usr/local/bin/composer
  • Mac OS X平台

    • brew tap josegonzalez/homebrew-php
    • brew install josegonzalez/php/composer

声明依赖

  • 概念
    • 在项目目录下创建一个composer.json文件,指明依赖
    • 比如,你的项目依赖 monolog
{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

安装依赖

  • 在项目目录下运行

    • composer install
  • 如果没有全局安装的话,则运行

    • php composer.phar install

自动加载

  • 概念
    • Composer提供了自动加载的特性
    • 只需在你的代码的初始化部分中加入下面一行
    • require 'vendor/autoload.php';

模块仓库

  • 概念
    • packagist.org 是Composer的仓库
    • 很多著名的PHP库都能在其中找到

高级特性

仅更新单个库

  • composer update foo/bar

    • 只想更新某个特定的库,不想更新它的所有依赖
  • composer update nothing

    • Composer不会更新库,但是会更新composer.lock
    • 用于Composer警告你哈希值和composer.lock中记载的不同
  • composer update --lock

    • 如上,编辑了composer.json后出现了警告

不编辑composer.json的情况下安装库

  • composer require "foo/bar:1.0.0"

    • 安装一个库都需要修改composer.json太麻烦
    • 可以直接使用require命令
  • composer init --require=foo/bar:1.0.0 -n

    • init命令有--require选项
    • 可以自动编写composer.json
    • 使用-n,这样就不用回答问题

派生很容易

  • composer create-project doctrine/orm path 2.2.0
    • create-project命令,自动克隆仓库,并检出指定的版本
    • 不需要搜寻原始的URI

考虑缓存 dist包优先

  • 概念

    • 最近一年以来的Composer会自动存档你下载的dist包
    • dist包可以用于诸如dev-master之类的分支
      • 可以使用install和update的--prefer-dist选项
  • 实例

    • composer init --require="twig/twig:1.*" -n --profile
    • composer install --profile

若要修改,源代码优先

  • composer update symfony/yaml --prefer-source
    • 使用--prefer-source来强制选择克隆源代码

为生产环境作准备

  • composer dump-autoload --optimize

    • 在部署代码到生产环境的时候,可以优化一下自动加载
  • --optimize-autoloader

    • 安装包的时候可以使用
    • 可以减少20%到25%的性能损失
原文地址:https://www.cnblogs.com/SharkJiao/p/14177776.html