composer

# 为什么要学习composer?

由于我们要学习的laravel框架底层是syfomy框架。syfomy框架底层是使用composer这个软件进行类库的管理,所以我们要先学习该软件的基本使用。当然本身composer也是一个非常优秀的产品。

# composer简介

今天学习的知识点是PHP里面的类库管理,在正式讲解该知识点的时候,我们回顾这样一些这样的场景,当我们在Windows上装一些软件的时候,在iPhone手机或者安卓上装APP的时候,我们会怎么做呢?

![腾讯软件管家](http://upload-images.jianshu.io/upload_images/267368-223a154a6a11e12e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

我们习惯于去软件管家商店进行下载APP store,例如常见的QQ软件管家,360软件管家,同样的问题也是会在PHP开发里面出现,例如我们的项目需要使用验证码、做文件上传、还有微信开发的类库,则我们该如何处理这些类库呢?(1. 自己写 2. 百度别人 3. 地方,专门提供第三方的代码类库)

在互联网上存在一个“PHP的应用商店”,提供了PHP开发过程中常见的类库。但是该网站只是提供一个类库对应的描述信息,以及下载地址。最终的类库文件的源码还是存在GitHub代码托管平台上的。该商店只是提供了对应的链接,下载的时候还是去GitHub上面进行下载。

[https://packagist.org/](https://packagist.org/)

![packagist](http://upload-images.jianshu.io/upload_images/267368-5ab50ed80eca063f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 那么我们使用什么样的工具去下载PHP应用商店里面的类库信息呢?

答:使用composer软件即可

官网:https://getcomposer.org/

国内网站:http://www.phpcomposer.com/

# 如何去PHP的应用商店里面搜索自己需要的类库?

1. 基于自己的经验(直接在应用商店搜索)

2. 先利用百度进行搜索,格式【关键字 composer】,列出一些关键信息,然后在去PHP应用商店进行收藏

![image.png](http://upload-images.jianshu.io/upload_images/267368-dd014035da2940a1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

通过上面的操作,我们知道PHP的应用商店可以提供很多的类库,但是这些类库的下载地址都是GitHub的地址(源码是保存GitHub网站上面的),那么思考一个问题,如何去下载源码,在本地进行开发?

1. 根据上面的下载命令进行下载

2. 借助一个软件

![image.png](http://upload-images.jianshu.io/upload_images/267368-30c9ce7548210dd2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 如何使用呢?

在正式的使用composer软件之前,还需要做一些环境处理。

1. 软件依赖PHP的环境(底层使用的php.exe进行操作)注意:建议PHP的版本为PHP7。(因为现在很多的composer管理的类库都是使用的PHP7 的特性)

2. 依赖PHP的一些扩展

## php.exe环境变量相关

由于composer的使用php.exe,所以需要把php.exe加入系统开发环境变量里面。

![php7设置](http://upload-images.jianshu.io/upload_images/267368-11f33d93d2c352e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

如何检测是否添加成功呢?新开一个窗口

![检测](http://upload-images.jianshu.io/upload_images/267368-5ad83d2ef5a29b11.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## php扩展开启

当我们在使用composer这个软件下载某些类库的时候,可能还需要使用到PHP的一些扩展,则我们可以先开启PHP的一些扩展。

1. php_curl扩展(网络请求)

2. php_openssl扩展(访问 https://协议)

3. php_fileinfo扩展(主要是检测文件的mime类型 iamge/png  image/jpg application/json text/html)

4. mbstring扩展(多字节扩展)

5. pdo扩展(数据库操作)

当开启后,则使用phpinfo函数测试一下看是否全部开启。

## 时区设置为PRC

![时区设置](http://upload-images.jianshu.io/upload_images/267368-582b19e386d38ca8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

php.ini设置时区

![image.png](http://upload-images.jianshu.io/upload_images/267368-8f2feef354e579ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## Apache相关

同时还要修改http.conf配置文件,开启Apache的rewrite模块后,需要重启Apache

![apache重写模块](http://upload-images.jianshu.io/upload_images/267368-bbdcc1de7b7bbe50.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## 安装composer

1.下载离线包文件

![composer离线安装包](http://upload-images.jianshu.io/upload_images/267368-6df5347c1740c4a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.将该离线包文件复制到PHP7的php.exe执行文件的同级目录下(前提是:php.exe已经加入到环境变量里面了)

![image.png](http://upload-images.jianshu.io/upload_images/267368-93088bdda75e03ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

前提php加入到环境变量,见到如下的信息,才算成功:

![php环境检测](http://upload-images.jianshu.io/upload_images/267368-a2c10fda459e601d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3.使用命令行进行如下的测试,如果看到下面的信息,则代表成功

![命令测试](http://upload-images.jianshu.io/upload_images/267368-41411665d89ec926.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 验证码使用

例如我们现在在自己的项目里面使用验证码,该验证就是一个项目依赖(require)

[验证码网站](https://packagist.org/packages/gregwar/captcha)

1. 前往PHP的应用商店搜索验证码类信息

![image.png](http://upload-images.jianshu.io/upload_images/267368-0276404267f0d197.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.点击查看对应的文档,进行安装

![image.png](http://upload-images.jianshu.io/upload_images/267368-88f68a8348c8bbed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3.先切换到自己的项目的根目录下,然后使用如下的命令

> composer require gregwar/captcha

![image.png](http://upload-images.jianshu.io/upload_images/267368-0b961adad16286f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

4. 安装后

![image.png](http://upload-images.jianshu.io/upload_images/267368-88bf67af3203bb05.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

5.使用

![image.png](http://upload-images.jianshu.io/upload_images/267368-5841e25c904953b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

效果:

![image.png](http://upload-images.jianshu.io/upload_images/267368-73d69a060a0db14d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

学习优秀的composer管理的类库

https://packagist.org/explore/popular

# composer常见问题

问题:主要是这个网站是在国外的,并且源码是放在GitHub上面的,GitHub也是国外的。这个时候就面临第一个问题,可能无法正常的访问这些网站。(不要随便fq)

解决:使用国内提供的镜像源,会定期的把国外的信息全部同步到国内的服务器上。

composer背后运行机制

![composer背后的机制](http://upload-images.jianshu.io/upload_images/267368-d773d381cbfeb786.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

镜像原理

![镜像](http://upload-images.jianshu.io/upload_images/267368-35bc9d51f3d3cdab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

[镜像网站](https://pkg.phpcomposer.com/)

# composer常见命令使用

在composer做类库的管理过程中,我们先需要去PHP的应用商品。去查看开发过程中需要的类库。然后使用composer进行下载。

# composer create-project 命令

该命名是用来安装项目的,可以通过该命令去下载对应的项目文件,例如 laravel框架。

注意:在使用composer安装项目的过程中,我们可能需要做两件事

1.指定安装的目录名称

2.指定安装的版本

命令:

> composer create-project 团队名称/包名称[=版本号]  [指定安装目录的名称,如果不写,则使用包名称替代]

注意:版本号需要根据packagist.org网站提供的版本进行指定

![版本查看](http://upload-images.jianshu.io/upload_images/267368-0bdd9c1be3318cf3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

命令:

> composer create-project laravel/laravel=5.4.15 local.laravel.com

现在的意思是安装laravel5.4.15这个版本,并且把该包安装到 local.larvael.com文件夹下。

# composer require 命令

该命令是用来安装项目开发中的依赖文件,例如上传类库、验证码类库。

至于到底使用上面的那个命令,具体看PHP应用商店提供的类库的文档操作。

# composer.json文件

该文件是用来记录composer管理的类库信息(管理类库),以及项目的信息(作者、联系方式....)。

# laravel的版本号问题

官方文档:

http://semver.org/lang/zh-CN/

会解释版本号里面的

^

~

*

具体的含义

# 为什么要学习composer呢?

1.不用重复造轮子(把被人的上传类库拿过来直接使用,不要自己编写)

2.不用过分的关心某个功能的底层,只需要会看文档即可(提供使用说明书)

3.解决类库的依赖问题(例如某个项目需要使用其他的产品,则会自动的解决)

4...............

# 相关资料

http://blog.csdn.net/think2me/article/details/38456931

http://www.cnblogs.com/52fhy/p/5246013.html

https://segmentfault.com/n/1330000006227425

http://blog.csdn.net/hel12he/article/details/46503875

http://www.cnblogs.com/zhangwei595806165/p/5814476.html

http://www.jquerycn.cn/a_16976

http://medoo.lvtao.net/

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

推荐阅读更多精彩内容

  • # 一、框架概述 # 课程概述 1. laravel 4天(之前TP框架还是很大的区别)(国外框架) 2. 在线教...
    关进一阅读 354评论 0 0
  • jQuery下实现锚点链接的平滑滚动(带浮动侧边栏)css+html+js JQuery实现简单的平滑过渡效果 J...
    平凡执着阅读 4,903评论 0 0
  • # 信息系统前沿课--范老师授课 #第二次作业## 一、重新使用Markdown ##熟悉语法,了解Markdow...
    thought_10c7阅读 678评论 0 0
  • 阿姐,养生的东西,很多都是时兴一阵。一会儿兴艾灸,一会儿兴拉筋,一会儿兴酵素,一会儿兴五谷粉。中国的中医养生博大精...
    华夏天真阅读 209评论 0 0
  • 冬至午后,烟雨加身,我不撑伞,来游西湖。虽然并是不阳春、月夜那样最宜游湖的天候,但所幸这时的西湖仍美,且美得恰到好...
    李浓眉阅读 714评论 0 3