Looyao's Blog

记录一些点滴

Composer的简单使用介绍

| Comments

Composer很好的解决了PHP的包管理和依赖问题,只需要import一个文件,Composer中管理的所有库就会按需加载,而不需要每个import。

先介绍一下Composer的安装。Composer的官方地址:https://getcomposer.org/

安装

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

这样在当前目录下会下载一个composer.phar的文件,为了方便,我们可以重命名一下,并放到/usr/local/bin下,方便执行。

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

使用

一般我习惯把Composer放在/opt下,所以先创建一个Composer的目录

1
mkdir /opt/composer

先下载一个KLogger,一个写日志的库,本人比较喜欢。

1
2
cd /opt/composer
composer require katzgrau/klogger:dev-master

这样,KLogger就被下载下来了,使用很简单,只需要引入一个文件。

1
2
3
4
5
6
<?php

require '/opt/composer/vendor/autoload.php';

$logger = new Katzgrau\KLogger\Logger(__DIR__.'/logs');
...

KLogger可以使用了,我们在下载一个别的库,Medoo:一个轻量级的数据库框架。同样的方式来下载。

1
2
cd /opt/composer
composer require catfan/Medoo

使用同理

1
2
3
4
5
6
7
8
9
<?php

require '/opt/composer/vendor/autoload.php';

$medoo = new medoo();

//继续使用KLogger
$logger = new Katzgrau\KLogger\Logger(__DIR__.'/logs');
...

使用很简单,只要引入了vendor/autoload.php,就可以自动引入用到库,的确很酷。

加速

如果发现composer执行起来很慢,可以考虑换个镜像。这里推荐一个日本的镜像:http://composer-proxy.jp/

执行

1
composer config -g -e

编辑后

1
2
3
4
5
6
7
8
9
10
11
{
    "config": {}
    ,
    "repositories": [
        { "packagist": false },
        {
            "type": "composer",
            "url": "http://composer-proxy.jp/proxy/packagist"
        }
    ]
}

如果发现composer长时间没反应,可以在执行时候加入-vvv选项,可以输出更多信息,方便查找问题。

1
composer -vvv require ...

最后

PHP的spl_autoload_register可以很方便做按需引入,当new一个类没发现的时候,就会触发,然后我们自己按照规则来处理引入。

一个简单的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

class ClassAutoloader
{
    public function __construct()
    {
        spl_autoload_register(array($this, 'loader'));
    }

    public function loader($className)
    {
        $file = dirname(__FILE__) . '/' . $className . '.php';
        if (is_file($file)) {
            require $file;
        }
    }
}

$autoloader = new ClassAutoloader();

具体路径规则可以自己定义,可以参考PSR

Comments