PHP的依赖管理——Composer

PHP的依赖管理——Composer_第1张图片
Composer

简介

Composer 是 PHP5 以上的依赖管理工具,用来对需要用到的功能模块进行统一管理,包括引用模块的版本、模块的安装和删除等等。它类似于 Java 语言中的 Maven和 Gradle,Node 语言的 NPM,Ruby 的 Gem 等。

安装

在终端中执行下面的命令即可获取到最新版本的 Composer

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

或者使用 Homebrew 进行安装

brew install composer

引用

  • 方式一

    在项目目录中创建一个 composer.json 的文件,在文件中添加下面的代码。

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

    保存文件后,在终端中项目目录下执行命令

    composer install
    

    执行后就会安装 monolog 模块,并在项目目录中自动生成一个 vendor 目录,该目录下就包含着引用的 monolog 模块的信息。

  • 方式二
    可以直接在终端中执行命令

    composer require monolog/monolog
    

    这样就得到了和方式一一样的结果。

开发时引用

在 composer.json 文件中添加 require-dev 的配置,表示的是这当中引用的模块是开发模式下使用的。

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

再次在终端执行 composer update 命令时就会在 vendor 目录下出现 monolog 模块了。

如果有些模块不需要在生产环境下加载的话,可以将这些模块配置到 require-dev 中,然后在执行 composer update/install 时添加 --no-dev选项,命令如下。

composer install --no-dev
composer update --no-dev

版本号的设置

名称 实例 描述
确切的版本号 1.0.2 指定确切的版本
范围 >=1.0 通过使用比较操作符可以指定有效的版本范围。 有效的运算符:>、>=、<、<=、!=
通配符 1.0.* 使用通配符来指定一种模式。 1.0.与>=1.0,<1.1是等效的
波浪号运算符 ~1.2.1 ~1.2相当于>=1.2.1,<1.3.0
异或运算符 ^1.2 ^1.2相当于>=1.2,<2.0

自动加载

在自己的 php 文件中加入下面的代码。

require 'vendor/autoload.php';

这样 Composer 就会通过 vendor 目录下的 autoload.php文件对 vendor 目录中的模块进行自动加载。

创建项目

composer create-project vendor/project:version [target-directory]
composer create-project vendor/project [target-directory] [version]

例如在当前目录中创建 Laravel 项目,可以使用下面的命令

composer create-project laravel/laravel

运行 shell 命令

可以使用 composer 执行一些脚本命令,只需要将这些命令配置在 composer.json 文件的 script 下就可以了。

    "scripts": {
        "事件名称": "事件脚本",
        "事件名称": [
            "事件脚本1",
            "事件脚本2"
        ]
    } 
事件名称 详细说明
pre-install-cmd 在 install 命令执行前触发。
post-install-cmd 在 install 命令执行后触发。
pre-update-cmd 在 update 命令执行前触发。
post-update-cmd 在 update 命令执行后触发。
pre-status-cmd 在 status 命令执行前触发。
post-status-cmd 在 status 命令执行后触发。
pre-package-install 在资源包安装前触发。
post-package-install 在资源包安装后触发。
pre-package-update 在资源包更新前触发。
post-package-update 在资源包更新后触发。
pre-package-uninstall 在资源包被卸载前触发。
post-package-uninstall 在资源包被卸载后触发。
pre-autoload-dump 在自动加载器被转储前触发,无论是 install/update 还是 dump-autoload 命令都会触发。
post-autoload-dump 在自动加载器被转储后触发,无论是 install/update 还是 dump-autoload 命令都会触发。
post-root-package-install 在 create-project 命令期间,根包安装完成后触发。
post-create-project-cmd 在 create-project 命令执行后触发。

你可能感兴趣的:(PHP的依赖管理——Composer)