[PHP Composer] 安装&使用

【工具简介】:Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

【中文官网】:http://www.phpcomposer.com/

【英文官网】:https://getcomposer.org/

【官方安装教程(Packagist)】:https://pkg.phpcomposer.com/

【其它参考】:http://blog.csdn.net/qq_29078067/article/d...

【官方文档】:http://docs.phpcomposer.com/

【后备方案】:如果实在安装不成功,可以去官网下载安装包进行安装
安装教程
【扩展】:php_openssl.dll 必须开启

【版本】:PHP>5.3.2

【环境变量】:事先配置好 PHP 环境变量

【安装】:使用 Windows 命令窗口依次执行

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

【类型】【局部安装】:直至上述步骤为止结束为局部安装,既安装于当前的文件夹内

【类型】【全局安装】:复制 composer.phar 至 PHP 安装目录,并在此目录下创建一个 Composer.bat 复制下面代码至此文件中

[@php](https://learnku.com/users/10050) "%~dp0composer.phar" %*

【测试结果】【局部安装】:切换至安装目录,既 composer.phar 所在目录,然后运行

php composer.phar composer --version

【测试结果】【全局安装】:

composer --version

【测试成功的结果输出】:

You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Composer version 1.4.1 2017-03-10 09:29:45

【可能出现的错误】:若提示 SSL 安装失败的信息,是由于没有安装CA证书所导致,前往链接下载证书 ( https://curl.haxx.se/docs/caextract.html ) ,然后配置 php.ini

【SSL错误参考文档】:https://my.oschina.net/yearnfar/blog/34672...

# @ php.ini 文件中配置 CA 证书路径
openssl.cafile=D:/wamp/bin/php/cacert-2017-01-18.pem

中国全量镜像
【镜像意义】【摘录】:一般情况下,安装包的数据(主要是 zip 文件)一般是从 github.com 上下载的,安装包的元数据是从 packagist.org 上下载的。然而,由于众所周知的原因,国外的网站连接速度很慢,并且随时可能被“墙”甚至“不存在”。所以经常会导致无法安装或者更新组件包

【镜像原理】【摘录】:Packagist 中国全量镜像”所做的就是缓存所有安装包和元数据到国内的机房并通过国内的 CDN 进行加速,这样就不必再去向国外的网站发起请求,从而达到加速 composer install 以及 composer update 的过程,并且更加快速、稳定。因此,即使 packagist.org、github.com 发生故障(主要是连接速度太慢和被墙),你仍然可以下载、更新安装包。

【全局安装】:打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

【局部安装】【命令】:打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:

composer config repo.packagist composer https://packagist.phpcomposer.com

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

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

【执行安装】:

# @ 在命令窗口执行下载 PS:如果使用的是局部安装,记得切换至安装目录
composer install

安装依赖 & 自动加载
【演示需求】:目前作者正好需要一个组件来完成刚收到的需求:读取 Excel,前往 Packagist 搜索关键词 "excel" 寻找合适的组件

【配置下载器】: 选择好合适的组件后我们需要将组件的信息写入 composer.json ( 注意:这个文件默认是没有的,需要自己创建 )

# @ 填写刚才所记录的 "厂商名/包名" & "版本号" PS:第二条记录是上文所配置的 "中国全量镜像"
{
    "require": {
        "phpoffice/phpexcel": "1.8.1"
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
}

【使用多组件 】:本人在实际环境中遇到了组件被删除的情况,其原因是由于 composer.json 配置错误导致

# @ 引入多个组件时必须写在同一个 require 键内否则组件将会被覆盖
{
    "require": {
        "phpoffice/phpexcel": "1.8.1",
        "filp/whoops": "2.1.8"
    }
}

【执行下载】:

# @ 在命令窗口执行下载 PS:如果使用的是局部安装,记得切换至安装目录
composer install

【更新组件】:若项目文件夹中已存在composer.lock文件那么请以此执行如下命令

# @ update 命令会根据 composer.json 更新锁文件
composer update
# @ install 命令会检查锁文件是否存在,如果存在将忽略 composer.josn 中的定义 所以需要先执行更新命令
composer install

【自动加载器】:若首次安装组件,你会发现 Composer 会在组件下载完成后在目录下创建 vendor 文件夹,其中就包括了 Composer 免费赠送的符合PSR-4标准的自动加载器

<?php
# @ 引入 autoload.php 就可实现自动加载,任何下载的组件都可直接调用,无需再次引入
require 'vendor/autoload.php';
?>

【示例代码】:最后我们直接使用刚才所下载的 PHPExcel 组件即可

<?php
# @ Composer 自动加载器
require 'vendor/autoload.php';
# @ PHPexcel 函数类调用
$inputFileName = 'Client.xls';
echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
echo '<hr />';
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
# @ 输出结果
var_dump($sheetData);
?>

【输出结果】:

Loading file Client.xls using IOFactory to identify the format

D:\wamp\www\Excel\index.php:20:array (size=2)
  1 =>
    array (size=8)
      'A' => string '编号' (length=6)
      'B' => string '手机' (length=6)
      'C' => string '姓名' (length=6)
      'D' => string '楼盘编号' (length=12)
      'E' => string '户型' (length=6)
      'F' => string '楼号' (length=6)
      'G' => string '销售编号' (length=12)
      'H' => string '楼销编号' (length=12)
  2 =>
    array (size=8)
      'A' => string '2017-0058' (length=9)
      'B' => string '34' (length=2)
      'C' => string 're' (length=2)
      'D' => string 'LP-0018' (length=7)
      'E' => string '次卧' (length=6)
      'F' => string '34' (length=2)
      'G' => string '2017-0002' (length=9)
      'H' => string '2017-0003' (length=9)

【结束语】:Composer 毫无疑问是现在使用PHP组件的最佳实践,它为全球的PHP开发者提供了便利并且活跃了社区,尤其对中国开发者而言 "中国全量镜像" 更是一个福音,甚至是沙漠中的绿洲,所以我由衷的感谢为这个开源项目做出贡献的开发者

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!