composer 原理(一) --小丑

composer 作用以及基本原理简介
composer 如何使用 ,具体原理详解

composer 是一个第三方代码库的整体管理工具 像是 centos上面的yum 方便来安装各个版本的软件 , composer就使是用来方便我们下载 更新 指定版本的第三方代码库(如smarty)

基本工作原理如下面这张图 更详细的说明在这里 http://www.phpcomposer.com/

(packagist 同样会存储一些github上各个版本的代码作为缓存 可以省去请求下载 github文件的麻烦)

composer 原理(一) --小丑_第1张图片
composer 如何使用
从上面的图可以看出来我们安装的 composer 的目的说简单点就是自动下载代码 从 (https://packagist.org/ 或者 http://github.com)

但是本地如何安装呢?

有软件安装的方法 在这里 点击打开链接 由于软件安装的方法容易出现问题 , 加之本文着重说明composer的原理 采用手动安装的方式来讲解

1、下载composer代码

2、同级目录创建 composer.json 文件

3、通过php执行composer代码(composer使用php写的)读取composer.json 中的文件并下载指定库 指定版本 到 指定文件夹

php执行composer的命令可以写成 bat脚本(win平台),添加脚本路径到环境变量 path ,命令行可以直接执行 composer 命令来使用composer (添加path 自行google, cmd命令set path 的方式是临时修改 所以务必通过计算机右键 属性 的方式修改)

我们已经知道 composer是php写出来的一个脚本 所以第一步我们要下载composer的php源代码 然后通过 php 来执行composer源代码 就可以使用了

composer源代码下载地址 点击打开链接

下载下来是一个 名叫 install 的文件 很多文章写的下载下来是 一个叫 composer.phar 的文件, 不要奇怪 , 我们知道 composer是php写的 所以无论文件叫什么名字 代码只要正确就能执行

打开你下载的文件看下源码 果然是 php 搜索下 file_get_content 这个函数 的确是有几个,这里就是下载源代码的php实现 composer.phar 是一个约定熟成的命名 我们可以将他重命名 然后放在一个文件夹下面

这时候我们在当前文件夹打开cmd 执行 php composer.phar 就可以使用composer

这时候你会发现comoser.phar 没有了 , cmd上显示的是 download… 这时候是要重现下载 composer.phar 文件 设置其中的各个配置项 这个才是真正的composer源代码 之前下载 的 install 只是一个php写的安装器

但是每次这么用太麻烦 将命令写到一个composer.bat 脚本 并将这个脚本所在目录添加到环境变量 path中 , 需要用composer 的地方 直接打开cmd执行命令 composer install 就会自动根据当前文件夹下的 composer.json 文件自动下载代码包

当前目录执行下面命令

@echo off php "%~dp0composer.phar" %* > composer.bat

解释下 win 下面的脚本语法

echo off 是关闭回显 就是不显示输出内容到cmd(无关紧要)
php "%~dp0composer.phar" %* > composer.bat   是创建一个文件文件名是 > 右边的,然后将 左边的内容写入到右边文件
也就是 bat 脚本里面的脚本代码是  php "%~dp0composer.phar" %*    

这里分三个部分 第一部分是 php 就是执行php解析 第二部分 是 “%~dp0composer.phar” 这个是php要执行的文件名称 第三部分是参数 %* 表示任一个参数

%~dp0 是代表脚本所在的文件路径 (d -> drive p -> path)

添加脚本 composer.bat 文件夹路径到 path 就可以了

然后是 composer.json 文件格式 如下

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

require : {
     "代码库名称"  : "版本"

}



具体请看这里  点击打开链接

packagist 中国镜像地址修改
composer config -g repo.packagist composer http://packagist.phpcomposer.com
具体看这里
http://pkg.phpcomposer.com/#composer-mirror

你可能感兴趣的:(框架)