Composer的简单使用介绍
                 jopen
                 10年前
            
                    Composer很好的解决了PHP的包管理和依赖问题,只需要import一个文件,Composer中管理的所有库就会按需加载,而不需要每个import。
先介绍一下Composer的安装。Composer的官方地址: https://getcomposer.org/
安装
curl -sS https://getcomposer.org/installer | php
这样在当前目录下会下载一个composer.phar的文件,为了方便,我们可以重命名一下,并放到/usr/local/bin下,方便执行。
mv composer.phar /usr/local/bin/composer
使用
一般我习惯把Composer放在/opt下,所以先创建一个Composer的目录
mkdir /opt/composer
先下载一个KLogger,一个写日志的库,本人比较喜欢。
cd /opt/composer composer require katzgrau/klogger:dev-master
这样,KLogger就被下载下来了,使用很简单,只需要引入一个文件。
<?php require '/opt/composer/vendor/autoload.php'; $logger = new Katzgrau\KLogger\Logger(__DIR__.'/logs'); ...
KLogger可以使用了,我们在下载一个别的库,Medoo:一个轻量级的数据库框架。同样的方式来下载。
cd /opt/composer composer require catfan/Medoo
使用同理
<?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/ 。
执行
composer config -g -e
编辑后
{      "config": {}      ,      "repositories": [          { "packagist": false },          {              "type": "composer",              "url": "http://composer-proxy.jp/proxy/packagist"          }      ]  }如果发现composer长时间没反应,可以在执行时候加入 -vvv 选项,可以输出更多信息,方便查找问题。
composer -vvv require ...
最后
PHP的 spl_autoload_register 可以很方便做按需引入,当 new 一个类没发现的时候,就会触发,然后我们自己按照规则来处理引入。
一个简单的例子
<?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
</div>