Composer 基础

Posted by Lysuu on April 20, 2020

Composer知识总结

composer自动加载方式

  1. PSR-4

    1
    2
    3
    4
    5
    6
    7
    
    {
      "autoload": {
        "psr-4": {
          "Foo\\": "src/"
        }
      }
    }
    
  2. PSR-0

    1
    2
    3
    4
    5
    6
    7
    
    {
      "autoload": {
        "psr-0": {
          "Foo\\": "src/"
        }
      }
    }
    
  3. Class-map 方式

    1
    2
    3
    4
    5
    
    {
      "autoload": {
        "classmap": ["src/", "lib/", "Something.php"]
      }
    }
    
  4. Files 方式

    1
    2
    3
    4
    5
    
    {
      "autoload": {
        "files": ["src/Library/functions.php"]
      }
    }
    

实现自定义类、函数库的加载

  • 推荐使用files的方式引入自定义的函数库
1
2
3
4
5
  {
      "autoload": {
          "files": ["src/Library/functions.php"]
      }
  }

版本约束

实例 名称 描述
1.0.2 确切版本号 确切的版本号
>=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2 范围 范围内的有效版本
1.0.* 通配符 符合该通配符的任意版本
~1.2
~1.2.3
赋值运算符 相当于>=1.2,<2.0
相当于>=1.2.3,<1.3.0

Composer.lock 文件

  • composer install 后会生成该文件
  • composer install 会检查该文件是否存在,如果存在composer会忽略 composer.json 文件(直接使用lock文件中指定的版本)
  • composer update 会更新 composer.lock文件(依赖composer.json文件)

Composer.json 键值

  • name 包的名称,包括命名空间和项目名称
  • description 包描述
  • version 版本
  • type 类型,支持 library(默认)projectmetapackagecomposer-plugin
  • keywords 关键字
  • homepage 项目主页
  • time 版本发布时间
  • license 许可协议
  • authors 作者信息
    • name 姓名
    • email 邮箱
    • homepage 作者主页
    • role 项目角色
  • support 技术支持
    • email
    • issues
    • forum
    • wiki
    • irc
    • source
  • require 必须的依赖项
  • require-dev 额外的依赖包,可以使用 --no-dev 忽略额外的依赖包
  • conflict 解决版本冲突
  • replace
  • suggest 建议安装的依赖包
  • autoload 自动加载
    • psr-4
    • psr-0
    • classmap
    • files
  • autoload-dev
  • include-path 文件包含(配置 include_path 使用 set_include_path()函数)
  • target-dir 定义当前包安装的目标文件夹
  • minimum-stability 依赖包稳定性过滤,可用标识为 devalphabetaRCstable
  • prefer-stable 确定稳定包优先级
  • repositories 自定义的包资源库 资源库
  • scripts 安装的过程中执行脚本 脚本
  • extra 任意的,供 scripts 使用的额外数据