• PHP的包依赖管理工具Composer简介


    composer是一个基于项目的依赖管理器,负责将php项目的所依赖的包和库安装在项目的目录中,默认不会不会安装任何数据到全局.他用于取代之前pear工具

    1 安装Composer

    1. curl -sS https://getcomposer.org/installer | php  
    2. mv composer.phar /usr/local/bin/composer  


    2 简单应用
    我们只需要声明一个项目所依赖的包或库即可,此后其他的事情就由Composer来处理了。因此使用Composer最重要的就是在项目目录中编写composer.json配置文件。例如你有一个项目,需要依赖monolog,可以这样写composer.json文件:
    {
        "require":
        {
            "monolog/monolog": "1.2.*"
        }
    }
    有了此文件后,在项目目录中执行composer install,即会在项目目录的vendor/目录下创建其所依赖的库。
    另一方面,包含了composer.json的目录,也可以发布出去,让其他人通过composer进行安装。只需要在packagelist网站,把此包传上去即可。

    3 配置文件说明

    Composer使用json作为其配置文件的格式。在工程的根目录下composer.json所定义的包称为root包。在配置文件中有如下的属性。

    3.1 require
    格式为: "require":{"vendor-name/package-name":"version", ...}
    名字部分会作为vendor下的路径进行创建
    版本支持精确的版本号,也支持范围如>=1.0; >=1.0,<2.0; ","作为逻辑与,而"!"作为逻辑或的意思。示例中使用了通配符*
    版本也支持tag或branch名称。
    类似的有require-dev,前者用于声明项目发布版本的依赖包,后者用于声明项目开发或测试中依赖的包。

    3.2 autoload

    composer支持PSR-0,PSR-4,classmap及files包含以支持文件自动加载。PSR-4为推荐方式。

    3.2.1 Files类型
    格式:"autoload":{"files":["path/to/1.php","path/to/2.php",...]}
    支持将数组中的文件进行自动加载,文件的路径相对于项目的根目录。缺点是麻烦,需要将所有文件都写进配置。

    3.2.2 classmap类型
    格式:"autoload":{"classmap": ["path/to/src1","path/to/src2",...]}
    支持将数组中的路径下的文件进行自动加载。其很方便,但缺点是一旦增加了新文件,需要执行dump-autoload命令重新生成映射文件vendor/composer/autoload_classmap.php。

    3.2.3 psr-0类型
    格式:"autoload":{"psr-0":{
                                "name1\space\":["path/",...],
                                "name2\space\":["path2/",...],
                              }
                     }
    支持将命名空间映射到路径。命名空间结尾的\不可省略。当执行install或update时,加载信息会写入vendor/composer/autoload_namespace.php文件。如果希望解析指定路径下的所有命名空间,则将命名空间置为空串即可。
    需要注意的是对应name2spaceFoo类的类文件的路径为path2/name2/space/Foo.php

    3.2.4 psr-4类型
    格式:"autoload":{"psr-4":{
                                "name1\space\":["path/",...],
                                "name2\space\":["path2/",...],
                              }
                     }
    支持将命名空间映射到路径。命名空间结尾的\不可省略。当执行install或update时,加载信息会写入vendor/composer/autoload_psr4.php文件。如果希望解析指定路径下的所有命名空间,则将命名空间置为空串即可。
    需要注意的是对应name2spaceFoo类的类文件的路径为path2/space/Foo.php,name2不出现在路径中。

    PSR-4和PSR-0最大的区别是对下划线(underscore)的定义不同。PSR-4中,在类名中使用下划线没有任何特殊含义。而PSR-0则规定类名中的下划线_会被转化成目录分隔符。

    3.3 name
    格式:"name":"vendor/package"
    如果要发布一个包,你需要指定包的名字信息。

    3.4 version
    格式:"version":"1.0.2"
    如果要发布一个包,你需要指定包的版本号。版本号的格式为X.Y.Z或vX.Y.Z,其后可以加后缀如-dev,-patch,-alpha,-beta或-RC。除dev外,尾上还可加一个数字,如1.0.0-alpha3。

    3.5 description
    格式:"description":"your own description at here!"
    如果要发布一个包,可以指定一个简短的介绍

    3.5 type
    格式:"type":"library"
    说明包的类型,支持如下library,project,metapackage,composer-plugin,默认为library

    3.6 keywords
    格式:"keywords":["logging","database","redis"]
    一个数组的关键字,用于搜索或过滤时使用。

    3.7 homepage
    可选的,说明项目的网站地址

    3.8 time/license
    说明项目的时间和License,时间格式为YY-MM-DD HH:MM:SS

    3.9 authors
    格式:"authors":[
                        {"name":"ss","email":"ss@ss.com","homepage":"","role":""},...
                    ]
    用于说明项目的作者信息,为可选的。

    3.10 support
    格式:"support":{"emial":"","issues":"","forum":"","wiki":"","irc":"" }
    用于说明项目的支持信息

    3.11 conflict
    用于声明与本包有冲突的包的版本,使用类似于require。

    3.12 replace
    用于声明需要替换的包,使用类似于require

    3.13 provided
    用于说明本包实现了某个包的接口

    3.14 suggest
    格式:"suggest":{"vendor/package":"Some description!"}
    用于说明可选的,用于增强功能的包及说明。

    4 命令行工具
    有了配置文件后,便可以使用composer命令来执行,有如下命令
    init                 进入交互式向导,在当前目录下生成composer.json文件
    install           根据配置进行安装
        选项 --prefer-source
                 --prefer-dist
                 --dry-run
                 --dev/--no-dev
                 -o  将psr0/4转换为classmap以提升性能
    update [package-name ...] 根据配置升级指定的包
    search [pattern]                    从packagelist中搜索包
    show   [package-name]      显示包的信息
    depends package               分析项目中包的依赖
    validate                                  验证配置文件内容
    status                                    检查代码是修改信息
    self-update                          升级composer本身
    config                                    配置composer本地或全局选项,可以--list显示所有可配置项   格式为conifg [option] [key] [value...]
    create-project vendor/package path version 在指定路径下下载一个项目,默认从packagelist上搜索
    dump-autoload                   当类映射中加入新类时,用于更新加载器

    5 自动加载

    对于composer管理的依赖,如果希望自动加载只需要在文件中加入:require 'vendor/autoload.php'
    拿上面的例子,使用依赖的类就十分简单了,使用packet-nameclass-name就可以直接访问了。如
    $log = new MonologLogger();

    6 杂项

    composer.lock文件用于记录各依赖的版本,如果使用了VCS,即此文件也需要进行提交。因为如果此文件存在,即composer会按照此文件中的版本进行下载,会忽略composer.json文件。如果需要更新版本,则需要修改composer.json,并执行update命令,此时会下载新版本,并更新composer.lock文件。

  • 相关阅读:
    2.4 Git 基础
    MySQL的连接命令
    linux中的ls、cd、pwd命令
    Vim 快速入门之基本命令
    linux 中查看进程、杀死进程、进入进程的命令
    linux下文件夹的创建、复制、剪切、重命名、清空和删除的命令
    Linux下tar压缩和解压缩命令详解
    用Windows远程桌面连接树莓派的方法
    MariaDB数据库安装完需要初始化操作
    linux设置服务为自动启动和关闭并禁用的命令
  • 原文地址:https://www.cnblogs.com/matengfei123/p/7767461.html
Copyright © 2020-2023  润新知