composer的一些简单介绍

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

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

  • 网址:getcomposer.org
  • 保存的文件夹:vendor目录
  • 安装:
  • 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 <vendorname>/<name> 这样就可以下载了,但下载的是最新版

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 <vendor>/<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那边了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容