zoukankan      html  css  js  c++  java
  • composer 说明<转>

    转自  http://blog.csdn.net/zzulp/article/details/18981029

    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文件。

  • 相关阅读:
    mysql修改数据表名
    HDU 5742 It's All In The Mind (贪心)
    HDU 5752 Sqrt Bo (数论)
    HDU 5753 Permutation Bo (推导 or 打表找规律)
    HDU 5762 Teacher Bo (暴力)
    HDU 5754 Life Winner Bo (博弈)
    CodeForces 455C Civilization (并查集+树的直径)
    CodeForces 455B A Lot of Games (博弈论)
    CodeForces 455A Boredom (DP)
    HDU 4861 Couple doubi (数论 or 打表找规律)
  • 原文地址:https://www.cnblogs.com/debmzhang/p/3880304.html
Copyright © 2011-2022 走看看