Write the Code. Change the World.

6月 28

前言

composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。composer 不是一个包管理器。它在每个项目的基础上进行管理,在你项目的某个目录中进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

composer 将这样为你解决问题:

  1. 你有一个项目依赖于若干个库。

  2. 其中一些库依赖于其他库。

  3. 你声明你所依赖的东西。

  4. composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。

今天使用php7下的mongodb的扩展。不仅要安装mongodb和mongodb php扩展,还要安装mongodb php的类库。而这个类库,需要用composer来安装。于是,就要先学习composer的安装和用法了。

下载和调试

composer的官网:https://getcomposer.org/
系统要求:PHP 5.3.2+

下载 composer.phar

cd /usr/local/src/php-composer

curl -sS https://getcomposer.org/installer | php 

这个下载并不一定顺利。如果下载不成功,请多尝试几次。如果还是不行,可以到官网手动下载composer.phar。

https://getcomposer.org/download/ ,找到 Manual Download,这里有其所有的版本。可以选择最新的版本下载, 当前最新版本是 1.4.1。

cd /usr/local/src/php-composer

wget https://getcomposer.org/download/1.4.1/composer.phar

将下载好的文件复制到php的 /bin/ 目录下,因为这个目录已经建立过环境变量,全局都可以访问。然后执行 composer.phar看看结果。

cp composer.phar /data/server/php/bin/composer.phar

composer.phar

一波未平,一波又起。这个时候可能会报错:

-bash: /data/server/php/bin/composer.phar: Permission denied

看错误是权限问题,给他权限不就可以了。然后再执行 composer.phar 。

chmod 777 /data/server/php/bin/composer.phar

composer.phar

终于,看到想看的信息了。如下图。

使用-下载库安装

本来,期待着 composer request 能有作用。request的过程,就是生成 composer.json 。发现出错的情况很多,根本request不到。这个和 node.js 的npm比,体验差多了。既然 request不好使,那就自己手动建立 composer.json (该文件包含了项目的依赖和其它的一些元数据),然后安装吧。

注意一点。先进入项目根目录。项目根目录或根目录的下级目录。这里是创建composer.json的地方。也是通过composer.json 安装库文件的地方。

很多库下载的速度特慢甚至下载不下来(海外的)。这个时候,可用 composer镜像网站 的方法来解决。网站提供了两种方式。

  1. 修改 composer 的全局配置文件(推荐方式)。执行下边的命令。
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
  1. 修改当前项目的 composer.json 配置文件。进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
    composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):

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

比如,mongodb的composer.json:

 {
        "name": "mongodb/mongodb",
        "description": "MongoDB driver library",
        "keywords": ["database", "driver", "mongodb", "persistence"],
        "homepage": "https://jira.mongodb.org/browse/PHPLIB",
        "license": "Apache-2.0",
        "authors": [
            { "name": "Hannes Magnusson", "email": "bjori@mongodb.com" },
            { "name": "Jeremy Mikola", "email": "jmikola@gmail.com" },
            { "name": "Derick Rethans", "email": "github@derickrethans.nl" }
        ],
        "require": {
            "php": ">=5.4",
            "ext-mongodb": "^1.2.0"
        },
        "require-dev": {
            "phpunit/phpunit": "^4.8"
        },
        "autoload": {
            "psr-4": { "MongoDB\\": "src/" },
            "files": [ "src/functions.php" ]
        },
        "autoload-dev": {
            "psr-4": { "MongoDB\\Tests\\": "tests/" }
        },
        "extra": {
            "branch-alias": {
                "dev-master": "1.2.x-dev"
            }
        },
        "repositories": {
            "packagist": {
                "type": "composer",
                "url": "https://packagist.phpcomposer.com"
            }
        }
    }

配置好composer.json后(加了镜像),执行 composer install 。果然好用,反应快,速度也快。

使用-在项目中

<?php
    require_once __DIR__ . "/vendor/autoload.php";
    ……
?>

http://docs.phpcomposer.com/03-cli.html

https://www.kancloud.cn/digest/php-src/136262

发表评论

电子邮件地址不会被公开。 必填项已用*标注