composer的一些简单介绍

本文转自KwongYanChan同学的笔记,地址: http://note.youdao.com/share/?id=d2f462195f51242cd70f55fda0250eed&type=note#/

01:Comopser简介和安装-【包依赖管理】

  • 网址:getcomposer.org
  • 保存的文件夹:vendor目录
  • 安装:
    • mac:curl -sS https://getcomposer.org/installer | php
    • win: 下载安装包composer-setup.exe
  • mac:
    • 下载会获取到composer.phar这个文件
    • 移动到环境变量目录并改名:mv composer.phar /usr/local/bin/composer
    • 移动到环境变量的目录后,等于注册了全局使用,并且已经更改名字为:composer
    • 那么可以直接再终端使用 composer前缀 后面跟随命令即可

02:package引用和版本

  • 项目下composer.json的写法, 如何引入包得写法
{
  "require":{
    "mustache/mustache":"2.9.0",//这里就是写入包名字与具体版本号
    //前面这个是vendor目录的包得vendor name
    //然后第2个同名的就对应包的名字,一般来说是这样写法
  }
}
  • 引入版本时候~号说明
    • 例子:~2.8.1,那么范围区间是2.8.1 to 2.9.0
    • 例子:~2.8,那么范围区间就变成 2.8 to 3.0
    • ~号:代表一个区间,0--9
  • 引入版本时候^号说明
    • 例子:^2.8,那么代表是,2.8 到 3.0,也就是说最大得版本号+1的点0版本,也就是2.8的2+1,.8变成.0
    • 例子:今天实践了下,^号也可以理解成为安装最新版本,下面例子就出现最新版的包了
{
  "require":{
    "mustache/mustache":"^2.7"
  }
}
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing mustache/mustache (v2.11.1) Loading from cache
Writing lock file
Generating autoload files
  • 可以直接再package网站进行搜索,并且直接使用包得命令在终端直接下载
    • composer require / 这样就可以下载了,但下载的是最新版

03:理解composer的install和update

  • composer.json对应的是composer update
  • composer.lock对应的是composer install,
  • 注意:没有lock文件composer就执行json文件

04:composer自动加载简单分析

  • 第一步:vendor/autoload.php
// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit23bbeae59271b037728c906bcb04be61::getLoader();
  • 第二步:查看autoload_real.php,目录:vendor/composer/autoload_real.php
    • 通过getLoader方法里的一个foreach进行注册
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ( $map as $namespace => $path ) {
    $loader->set($namespace,$path);
}
  • 第三步:查看autoload_namespaces.php,目录:vendor/composer/autoload_namespaces.php
// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Mustache' => array($vendorDir . '/mustache/mustache/src'),
    //src目录下就按照以上的命名空间来操作
);
  • 第四步:查看依赖包目录下得composer.json文件,看它通过那个命名空间规范来加载
    • 目录:mustache/composer.json
    • 通过psr-0规范标准
"autoload": {
        "psr-0": { "Mustache": "src/" }
    }
  • 整条自动加载流程:
    • 引入自动加载文件 autoload.php
    • 自动执行autoload_real.php中得方法getLoader()
    • 方法中调用了autoload_namespaces.php进行返回一个数组,到此自动加载命名空间 基本结束
    • namespaces文件执行的命名空间标准需要查看依赖包下得composer.json文件

05:Find A Package

  • 在packagist.org进行搜索依赖包
  • 再终端可以使用命令 :composer serach <包名>
  • 显示具体信息终端命令:composer --all <包名>

06:使用composer创建项目

  • 常见命令 :composer create-project
  • composer创建项目终端命令:composer create-project <原始名字>/<默认名字> <别名> <版本号>

07: Understanding Require Dev

  • composer一个特点:require-dev--本地开发使用到得package
  • 如果下载一个项目,并不需要dev环境中得package可以使用:composer install --no-dev来操作
  • 所以上传自己项目时候需要包含composer.lock这个文件

08:composer运行shell命令

  • 网址:getcomposer.org/doc/articles/scripts.md下得command events看到具体命令
  • 只需要在composer.json文件加上scipts这样的引导数组即可,下面例子参考:
"scripts":{
    "post-install-cmd":"echo 'hello'"
}

09:发布自己的Package

  • 第一步:登陆github,创建项目
  • 第二步:终端git clone 项目地址
  • 第三步:进入项目目录,创建composer.json文件:执行命令composer init即可
  • 第四步:根据提示填写完毕穿件composer.json
    • package name /
    • description
    • author
    • minimum stability
    • package type
    • license
  • 第五步命令:git add .
  • 第六步命令:git commit -m"更改的描述"
  • 第七步命令:git push
  • 第八步:发布到packaglist.org,登陆自己的id
  • 第九步:点击右上角submit,然后粘贴github连接后,再点击check
  • 第十步:添加自动更新webhook
    • 到 github项目,点击settings
    • 点击左边导航webhooks & services
    • 点击右边的add services
    • 搜索package
    • 填写user token,token可以再packagist得profile找到
    • 粘贴token,然后addservice
    • 然后点击生成出来的package出现画面
    • 点击test service,出现ok表示成功
  • 备注:绑定完成后,当你git提交更新后就会同步到package那边了

你可能感兴趣的:(composer的一些简单介绍)