如何使用composer来管理php项目

吴宇 2019-11-19 47℃ 0条

composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的.

       项目开发过程中,扩展包的引入能够帮助我们快速且强大的开发我们的项目,如js中的 node ,python中的 pip ,而php中我们用的就是 composer

        composer 是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的.

1、安装composer

       在windows系统下,可直接下载并且运行Composer-Setup.exe,它将安装最新版本的 Composer ,并设置好系统的环境变量,这样你就可以在任何目录下直接使用 composer 命令。

       在Linux系统下,可通过以下命令进行安装:

# 下载安装文件
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php执行安装文件
php composer-setup.php
# 删除安装文件
php -r "unlink('composer-setup.php');"
# 将composer.phar移动到/usr/local/bin/下
mv composer.phar /usr/local/bin/composer

2、使用 Composer

       要开始在项目中使用 Composer,只需要一个 composer.json 文件。该文件包含了项目的依赖和其它的一些元数据。这是一个JSON格式的文件,它允许你定义嵌套结构。

       例如,下面是本博客项目的 composer.json 文件

{
    "name": "gentlemanwuyu/blog",
    "description": "The blog established by laravel framework",
    "keywords": ["blog", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",
        "mews/captcha": "^2.1",
        "creativeorange/gravatar": "~1.0",
        "caffeinated/modules": "^2.0",
        "rap2hpoutre/laravel-log-viewer": "^v1.2.1"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "app/Libs/Helpers/helper.php"
        ]
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

       一般来说,我们只需要在 require下加入我们需要添加的扩展包即可,键为包名,值为包的版本,版本约束可以用几个不同的方法来指定:

名称 实例 描述
确切的版本号 1.0.2 你可以指定包的确切版本
范围

>=1.0

>=1.0,<2.0

>=1.0,<1.1|>=1.2

通过使用比较操作符可以指定有效的版本范围。

有效的运算符:>>=<<=!=

你可以定义多个范围,用逗号隔开,这将被视为一个逻辑 AND 处理。一个管道符号|将作为逻辑 OR 处理。

AND 的优先级高于 OR

通配符 1.0.* 你可以使用通配符*来指定一种模式。1.0.*>=1.0,<1.1是等效的。
赋值运算符 ~1.2 这对于遵循语义化版本号的项目非常有用。~1.2相当于>=1.2,<2.0

3、Composer命令行工具

composer init

       使用者可以在自己的项目下创建 composer.json 以便定义你项目的依赖包,也可以通过 composer init 交互式的创建 composer.json .

composer install

       应该是最常用的命令, composer会根据本地的 composer.json 安装包,将下载的包放入项目下的 vendor 目录下,同时将安装时候的包版本信息放入到 composer.lock ,以便锁定版本。

       其实在 install 的时候,假如发现 composer.lock 版本和目前 vendor 目录下的代码版本是一致的,则Composer会什么也不做, composer.lock 的目的就是让你安心在目前这个版本下工作,而不获取最新版本的包。

composer update

       那么如何更新 composer.lock 以便获取到最新版本的包呢?通过这个命令即可更新最新版本的包

composer config

       全局的配置保存在 COMPOSER_HOME/config.json ,非全局的配置信息则存储在本项目目录下。

composer create-project

       这个命令不常用,但是我觉得还是很重要的,使用普通的 install 命令是将项目所有的依赖包下载到本项目 vendor 目录下.而通过这个命令则是将所有的代码及其依赖的包放到一个目录下,相当于执行了一个 git clone 命令,一般是包的开发者可能为了修复bug会使用该命令。

composer dumpautoload

       当你修改项目下的 composer.json 的文件,如果只是更新自动加载,不一定要运行 composer update 命令进行更新,有的时候可以使用该命令来更新自动加载。

4、配置国内镜像

       在国内使用Composer下载特别慢,可以通过配置国内镜像进行加速。可以在全局或单个项目修改镜像仓库地址,推荐使用全局的方式

  • 修改composer的全局配置文件
composer config -g repo.packagist composer https://packagist.phpcomposer.com
  • 修改当前项目的 composer.json 配置文件
composer config repo.packagist composer https://packagist.phpcomposer.com
标签: phpcomposer

非特殊说明,本博所有文章均为博主原创。