# 为什么要学习composer?
由于我们要学习的laravel框架底层是syfomy框架。syfomy框架底层是使用composer这个软件进行类库的管理,所以我们要先学习该软件的基本使用。当然本身composer也是一个非常优秀的产品。
# composer简介
今天学习的知识点是PHP里面的类库管理,在正式讲解该知识点的时候,我们回顾这样一些这样的场景,当我们在Windows上装一些软件的时候,在iPhone手机或者安卓上装APP的时候,我们会怎么做呢?
![腾讯软件管家](https://img.haomeiwen.com/i267368/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](https://img.haomeiwen.com/i267368/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](https://img.haomeiwen.com/i267368/dd014035da2940a1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过上面的操作,我们知道PHP的应用商店可以提供很多的类库,但是这些类库的下载地址都是GitHub的地址(源码是保存GitHub网站上面的),那么思考一个问题,如何去下载源码,在本地进行开发?
1. 根据上面的下载命令进行下载
2. 借助一个软件
![image.png](https://img.haomeiwen.com/i267368/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设置](https://img.haomeiwen.com/i267368/11f33d93d2c352e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如何检测是否添加成功呢?新开一个窗口
![检测](https://img.haomeiwen.com/i267368/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
![时区设置](https://img.haomeiwen.com/i267368/582b19e386d38ca8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
php.ini设置时区
![image.png](https://img.haomeiwen.com/i267368/8f2feef354e579ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## Apache相关
同时还要修改http.conf配置文件,开启Apache的rewrite模块后,需要重启Apache
![apache重写模块](https://img.haomeiwen.com/i267368/bbdcc1de7b7bbe50.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 安装composer
1.下载离线包文件
![composer离线安装包](https://img.haomeiwen.com/i267368/6df5347c1740c4a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2.将该离线包文件复制到PHP7的php.exe执行文件的同级目录下(前提是:php.exe已经加入到环境变量里面了)
![image.png](https://img.haomeiwen.com/i267368/93088bdda75e03ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
前提php加入到环境变量,见到如下的信息,才算成功:
![php环境检测](https://img.haomeiwen.com/i267368/a2c10fda459e601d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.使用命令行进行如下的测试,如果看到下面的信息,则代表成功
![命令测试](https://img.haomeiwen.com/i267368/41411665d89ec926.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
# 验证码使用
例如我们现在在自己的项目里面使用验证码,该验证就是一个项目依赖(require)
[验证码网站](https://packagist.org/packages/gregwar/captcha)
1. 前往PHP的应用商店搜索验证码类信息
![image.png](https://img.haomeiwen.com/i267368/0276404267f0d197.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2.点击查看对应的文档,进行安装
![image.png](https://img.haomeiwen.com/i267368/88f68a8348c8bbed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.先切换到自己的项目的根目录下,然后使用如下的命令
> composer require gregwar/captcha
![image.png](https://img.haomeiwen.com/i267368/0b961adad16286f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4. 安装后
![image.png](https://img.haomeiwen.com/i267368/88bf67af3203bb05.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5.使用
![image.png](https://img.haomeiwen.com/i267368/5841e25c904953b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
效果:
![image.png](https://img.haomeiwen.com/i267368/73d69a060a0db14d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
学习优秀的composer管理的类库
https://packagist.org/explore/popular
# composer常见问题
问题:主要是这个网站是在国外的,并且源码是放在GitHub上面的,GitHub也是国外的。这个时候就面临第一个问题,可能无法正常的访问这些网站。(不要随便fq)
解决:使用国内提供的镜像源,会定期的把国外的信息全部同步到国内的服务器上。
composer背后运行机制
![composer背后的机制](https://img.haomeiwen.com/i267368/d773d381cbfeb786.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
镜像原理
![镜像](https://img.haomeiwen.com/i267368/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网站提供的版本进行指定
![版本查看](https://img.haomeiwen.com/i267368/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/
网友评论