Composer 是 PHP 的一个依赖管理工具(据说是最优秀的)。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。目前很多项目以Composer 作为依赖管理工具,目前正在学习yii2框架,以yii2为例学习一些常用命令。

安装


具体安装方式可参照composer中文文档,分 *nix 和 win 平台:

安装完成后测试是否安装成功

composer -V

输入图中所示的命令,出现类似图中的结果,表面安装成功。

镜像是什么鬼?


不知道镜像的天朝程序员,不是一个优秀的码农。

由于强力的 GFW 导致无法上一些优秀的国外网站,所以各种镜像服务器诞生了,帮我们把这些网站上的资源都导入到了国内,我们通过修改一个配置就可以下载这些资源了。而且这些资源都是定期同步的,不需要担心资源陈旧问题。

也就是因为这个,N多人望而却步,到现在都不敢用 Composer,感觉好可惜,这么好的工具。

目前唯一还算稳定的 Composer 镜像只有 Packagist / Composer 中国全量镜像 这一家了,虽然偶尔抽风。
使用方法也超简单,推荐全局配置镜像。

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

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

使用 Composer


常用命令:

1、初始化命令

composer init

该命令通过交互的方式在当前目录下(一般为项目根目录)生成composer.json的配置文件(也可手动编辑生成),yii2中的配置文件如下:

 {
     "name": "yiisoft/yii2-app-basic", //包的名称,它包括供应商名称和项目名称,使用 / 分隔
     "description": "Yii 2 Basic Project Template", //一个包的简短描述
     "keywords": ["yii2", "framework", "basic", "project template"] ,//该包相关的关键词的数组。这些可用于搜索和过滤
     "homepage": "http://www.yiiframework.com/", //该项目网站的 URL 地址。
     "type": "project", //包的安装类型,project: 表示当前包是一个项目,而不是一个库。
     "license": "BSD-3-Clause", //包的许可协议
     "support": { //获取项目支持的向相关信息
         "issues": "https://github.com/yiisoft/yii2/issues?state=open",
         "forum": "http://www.yiiframework.com/forum/",
         "wiki": "http://www.yiiframework.com/wiki/",
         "irc": "irc://irc.freenode.net/yii",
         "source": "https://github.com/yiisoft/yii2"
     },
     "minimum-stability": "stable",//定义了通过稳定性过滤包的默认行为。默认为 stable(稳定)。
     "require": { //必须的软件包列表,除非这些依赖被满足,否则不会完成安装
         "php": ">=5.4.0",
         "yiisoft/yii2": ">=2.0.5",
         "yiisoft/yii2-bootstrap": "*",
         "yiisoft/yii2-swiftmailer": "*"
     },
     "require-dev": { //这个列表是为开发或测试等目的,额外列出的依赖。
         "yiisoft/yii2-codeception": "*",
         "yiisoft/yii2-debug": "*",
         "yiisoft/yii2-gii": "*",
         "yiisoft/yii2-faker": "*"
     },
     "config": { //仅用于项目的这一组composer配置
         "process-timeout": 1800 //处理进程结束时间,例如:git 克隆的时间。Composer 将放弃超时的任务。如果你的网络缓慢或者正在使用一个巨大的包,你可能要将这个值设置的更高一些。
     },
     "scripts": { //在安装过程中的各个阶段挂接脚本
         "post-create-project-cmd": [
             "yii\\composer\\Installer::postCreateProject"
         ]
     },
     "extra": { //任意的,供 scripts 使用的额外数据  本例中用于生成yii2的主要目录权限和CookieValidationKey
         "yii\\composer\\Installer::postCreateProject": {
             "setPermission": [
                 {
                     "runtime": "0777",
                     "web/assets": "0777",
                     "yii": "0755"
                 }
             ],
             "generateCookieValidationKey": [
                 "config/web.php"
             ]
         },
         "asset-installer-paths": {
             "npm-asset-library": "vendor/npm",
             "bower-asset-library": "vendor/bower"
         }
     }
 }

2、安装依赖包命令

composer install

该命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下,如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。

执行成功结果类似:

3、更新依赖包命令

composer update

该命令将获取依赖的最新版本,并将版本号写入 composer.lock文件,如果只更新某几个文件,可以在后面指定

更新yii2项目中的依赖,执行结果类似下图:

4、添加依赖命令

composer require  

增加新的依赖包到当前目录的 composer.json 文件中,并且安装该依赖

5、全局执行命令

composer global require "fxp/composer-asset-plugin:~1.1.1"

命令允许你在composer主目录下执行其它命令,像 installrequire 或 update

并且如果你将主目录下的/vendor/bin路径 加入到了 $PATH 环境变量中,你就可以用它在命令行中安装全局应用

以yii2中安装 Composer Asset 插件为例:

安装成功的话现在Composer Asset 插件就可以在全局范围使用了。

6、创建项目命令

创建yii2基本应用程序模板项目的命令:

composer create-project yiisoft/yii2-app-basic basic 2.0.8

创建yii2高级应用程序模板项目的命令:

composer create-project yiisoft/yii2-app-advanced yii-2.0.8 2.0.8

注:实际执行命令时路径应选择自己的web目录路径,如按照截图中执行将在F:/www目录下创建名称为basic或者yii-2.0.8项目

以创建yii2基本应用程序模板项目为例:

7、更新composer命令

composer self-update

Composer 学习笔记的更多相关文章

  1. Laravel学习笔记(三)--在CentOS上配置Laravel

    在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚.     今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下.     1)系统 ...

  2. 我的Android进阶之旅------>Android中编解码学习笔记

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  3. thinkphp5.0学习笔记

    2019-11-11学习笔记 安装TP5.0 a)源代码包下载 在thinkphp官网下载(www.thinkphp.cn)下载 完整版本的TP5.0 b) composer 安装 切换到网站的根目录 ...

  4. TP6学习笔记一:安装与基本配置

    1 说明与概述 1.1 说明 以下内容大部分来源于TP6完全开发手册,以手册为主附上个人理解,仅作学习使用. 1.2 概述 第一篇学习笔记,主要记录TP6的基础,包括TP6简介,安装,Hello Wo ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  7. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  8. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  9. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

随机推荐

  1. PYTHON 全局变量和局部变量

    #局部变量,只能调用函数体内的变量 def fun(): a = 234 print(a) #全局变量,在函数体外声明,在函数体内都可调用 b = 'gyc' def fun(): a = 234 p ...

  2. BZOJ 4725: [POI2017]Reprezentacje ró?nicowe

    Description 一个数列. \(a_1=1,a_2=2\) 当 \(n>2\) 时 \[a_n = \{  \begin {matrix} 2a_{n-1},\text{n is an ...

  3. iOS整体框架类图

    Cocoa是OS X和iOS操作系统的程序的运行环境. iOS的操作系统层次结构分为四层:触摸UI层,媒体层,核心服务层,核心OS层.其中底层框架提供iOS的基本服务和技术,高层次框架简历在低层次框架 ...

  4. 用命令行来安装mac应用

    今天看了下唐巧的博客,发现了这样一种宝贝呀,哈哈,分享一下 命令行工具,brew cask是一个用命令行管理Mac下应用的工具,它是基于homebrew的一个增强工具. brew cask insta ...

  5. ORACLE的DUAL表及DB2的SYSIBM.SYSDUMMY1

    在ORACLE中,数据库用户通过访问DUAL表获取一些系统信息:DB2中,相应的表为SYSIBM.SYSDUMMY1表 ORACE中举例: SELECT SYSDATE FROM DUAL;获取当前日 ...

  6. c语言中->(间接成员运算符)的含义

    写于2016年12月12日. "->"称为间接成员运算符. 总体注解:这个运算符与指向结构(sturct)或联合(union)的指针一起使用,用来指明结构或联合的的成员.假设 ...

  7. [BI项目记]-搭建代码管理环境之客户端

    前面已经介绍了如何搭建代码管理环境的服务器端安装和配置,这里介绍对于客户端的几个场景. 首先对于开发人员来说,可以直接使用Visual Studio来连接,这里主要演示Visual Studio 20 ...

  8. 铁区MES部分页面展示

    激活码: 76231722-2e7554593-b750-07e2f4844531 TIP: 若您激活不成功,可能是因为您所安装的软件版本较低,请尝试以下激活码 激活码: RXWY-A25421-K5 ...

  9. jquery跳出each循环

    答案是使用 return false;  切记哦,不是使用break;也不是直接使用return; jQuery中each类似于javascript的for循环 但不同于for循环的是在each里面不 ...

  10. git学习(一):建立本地仓库和基本命令

    前沿 最近一直在做目标跟踪,开始一直是通过文件按日期命名的方式来区分版本的,实在是太麻烦了,现在下定决心学习一下git命令 基本概念 集中式:有一台中央服务器,每个人把需要改的部分拿回去改完再送回来 ...