• 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%的性能损失
  • 相关阅读:
    gcc编译器如何生成指定的文件名
    文章如何做伪原创 SEO大神教你几招做"原创"网站文章的心得
    linux命令大全
    SDC文件模版
    lwip:网络数据包读取和解析过程
    离散时间信号与系统
    网络编程杂谈
    TCP segment of a reassembled PDU
    gdb: multiple process debug
    ntp.conf:很少有人提及的事
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14177776.html
Copyright © 2020-2023  润新知