zoukankan      html  css  js  c++  java
  • Composer快速入门

    什么是Composer

    Composer 是PHP的一个依赖管理工具。你可以在你的项目里声明你依赖的库,然后Composer会帮你解决以下问题:找到这些库以及这些库所依赖的库可以安装的版本,然后进行安装。所以Composer是一个依赖管理工具,而不是一个包管理工具(类似Yum或者Apt),因为它是基于每个项目去管理这些包,把这些包安装到项目里的某个目录。

    Composer的安装

    Composer要求 PHP 5.3.2+ 版本以及一些PHP的配置,如果有不兼容的情况发生,在安装过程中会有提示。有两种方式安装Composer,一是本地安装,而是全局安装。

    本地安装

    本地安装会把Composer安装到当前的目录下。运行以下命令进行安装:

    $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '070854512ef404f16bac87071a6db9fd9721da1684cd4589b1196c3faf71b9a2682e2311b36a5079825e155ac7ce150d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    $ php composer-setup.php
    $ php -r "unlink('composer-setup.php');"

    一共4条命令,它们分别执行以下的操作:

    1. 下载安装文件到当前目录。

    2. 检验安装文件的SHA-384散列。

    3. 运行安装文件。

    4. 删除安装文件。

    然后我们就可以运行执行以下命令来运行Compoer了:

    $ php composer.phar

    需要注意的是,第二步检查文件的散列,每一个版本安装文件的散列值都会不同的,所以每次安装最好都到 下载页面 去获取安装代码。或者如果你觉得没有检查安装文件的必要的话,也可以跳过这条命令去执行下面的命令。当然从安全角度考虑,不建议这么做。

    全局安装

    所谓全局安装,其实就是把Composer安装到 PATH 变量里的某个目录中,这样你就可以从任何地方去访问Composer了。个人也建议这么做。我们只需要把本地安装的composer执行文件移动到全局目录下即可:

    $ mv composer.phar /usr/local/bin/composer

    这样你就可以在任何地方直接运行 composer 命令了。后续如没有特别说明,都是在全局安装的情况下执行命令。

    安装选项

    Composer安装时支持3个选项。

    --install-dir

    通过 --install-dir 选项可以修改Composer的安装路径,例如如果我们想把Composer安装在 bin 目录下:

    $ php composer-setup.php --install-dir=bin

    --filename

    通过 --filename 选项,我们可以修改Composer执行文件的名称(默认为composer.phar)。例如:

    $ php composer-setup.php --filename=composer

    --version

    如果想安装指定版本的Composer,可以使用 --version 选项:

    $ php composer-setup.php --version=1.0.0-alpha8

    手动下载

    除了上面的安装方式外,还可以直接下载执行文件,请到 下载页面 进行下载。

    Composer的更新

    更新Composer很简单,只需要执行以下命令:

    $ composer selfupdate
    Updating to version 1.1.2 (stable channel).
        Downloading: 100%         
    Use composer self-update --rollback to return to version 06c45623d76457562cecbcf2245f904aa0f63a87
    
    # 或者(两者是等效的)
    $ composer self-update

    如果想进行版本的回滚,可以使用以下命令:

    $ composer selfupdate --rollback
    Rolling back to version 2016-05-26_16-11-16-06c4562.

    Composer的基本使用

    composer.json文件

    安装完Composer后,想要在项目里开始使用它,你唯一需要做的就是创建一个composer.json 文件。这个文件描述了你这个项目所依赖的包以及一些其他的元信息。

    require键

    通过require这个配置项,我们可以指定项目的依赖。假设我们项目需要用到monolog/monolog 这个日志库,那么我们可以这样配置 composer.json 文件:

    {
        "require": {
            "monolog/monolog": "1.0.*"
        }
    }

    require 的值是一个对象,对象里的每一个键对应一个依赖,通过键名为包的名称,键值为包的版本。

    包的名称

    包名由vendor名和项目名组成,这样可以保证包名的唯一性。项目名可以重复,但是vendor名每个人都不一样。以 monolog/monolog 为例,vendor名和项目名都是monolog 。

    包的版本

    在上面的例子中,我们要求 monolog/monolog 的版本为 1.0.* ,表示任何的1.0的开发分支版本都满足要求。版本的指定方式有很多种,在后面的文章中会进行详细的解说。

    安装依赖

    创建完 composer.json 文件并配置好 require 后,我们就可以安装依赖了,只需要运行以下的命令:

    $ composer install
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
      - Installing monolog/monolog (1.0.2)
        Downloading: 100%         
    
    Writing lock file
    Generating autoload files

    Composer会根据上面配置的版本约定下载最新版本的 monolog/monolog 到默认目录 vendor 下。

    composer.lock文件

    运行完上面的 install 命令后,你会发现除了 vendor 目录,还会多了一个composer.lock 文件。这个文件保存了项目已经安装的每个包的具体版本。在运行install 命令的时候,如果存在这个文件,则Composer会根据这个文件下载对应版本的包。这样的好处是可以保证各个环境的依赖的版本一致,否则如果没有这个文件,每个环境在运行 install 时可能下载到的版本就不一致了。所以建议把composer.lock 文件也放到版本控制里。

    更新依赖

    要更新依赖,只需要运行 update 命令:

    # 更新所有的依赖
    $ composer update
    
    # 更新某个依赖
    $ composer update monolog/monolog

    自动加载

    下载完依赖后,我们可以开始使用依赖所提供的库了。Composer会为下载的库创建自动加载文件 vendor/autoload.php ,我们只需要包含这个文件就能轻松的调用各个库的功能。以 monolog/monolog 为例:

    $log = new MonologLogger('name');
    $log->pushHandler(new MonologHandlerStreamHandler('app.log', MonologLogger::WARNING));
    $log->addWarning('Foo');

    我们不用关心库文件的加载问题,Composer的 autoload.php 文件已经帮我们处理好了各个库的自动加载。

    Packagist 镜像

    至此,我们安装好了Composer,也知道了它的基本用法,基本可以快乐的玩耍了。但是众所周知,由于某些原因,github和packagist在国内有时会访问不了,或者速度很慢,这就会导致使用Composer时的各种不爽。还好我们国内有个 镜像 可以解决这个问题,只需要把仓库的路径修改为镜像的路径即可。

    有两种方式,一是修改Composer的全局配置(推荐的方式):

    $ composer config -g repo.packagist composer https://packagist.phpcomposer.com

    这个命令会修改Composer的全局配置文件 config.json 。二是修改单个项目的配置:

    $ composer config repo.packagist composer https://packagist.phpcomposer.com

    这个命令会修改项目下的 composer.json 文件,添加如下的配置信息:

    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }

    当然你也可以直接手动修改 composer.json 文件,添加上面那段配置信息。

    详情请访问: http://pkg.phpcomposer.com/ 。

    参考

  • 相关阅读:
    【Azure 应用服务】由 Azure Functions runtime is unreachable 的错误消息推导出 ASYNC(异步)和 SYNC(同步)混用而引起ThreadPool耗尽问题
    【Azure API 管理】是否可以将Swagger 的API定义导入导Azure API Management中
    【Azure 应用服务】Azure Function 不能被触发
    【Azure 环境】Azure Key Vault (密钥保管库)中所保管的Keys, Secrets,Certificates是否可以实现数据粒度的权限控制呢?
    【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
    【Azure 事件中心】azure-spring-cloud-stream-binder-eventhubs客户端组件问题, 实践消息非顺序可达
    【Azure API 管理】Azure API Management通过请求中的Path来限定其被访问的频率(如1秒一次)
    【Azure 环境】前端Web通过Azure AD获取Token时发生跨域问题(CORS Error)
    【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
    【Azure 应用服务】App Service中抓取 Web Job 的 DUMP 办法
  • 原文地址:https://www.cnblogs.com/chunguang/p/5583649.html
Copyright © 2011-2022 走看看