Composer使用总结

来源:转载


一、依赖管理

我们在开发时,不会所有的东西都自己写,有时会用到别人已经写好的库或者框架等。一般的做法是到官网或者GitHub下载这些包到指定的目录下,在使用的时候去引用就可以了。

但是如果需要使用的包比较多,而这些包的版本又比较多,甚至这些包还要依赖别的包,那这就是一个费时费力的工作了。于是出现了依赖管理的概念。

 

二、介绍Composer

Composer是PHP中的一个依赖管理工具。它可以让你声明自己项目所依赖的库,然后它将会在项目中为你安装这些库。

Composer不是包管理器。是的,它实际上和"包"或者库打交道,但是它是以项目为单位进行管理,把它们安装到你项目中的一个目录(例如vendor)。默认情况下它不会以全局的方式安装任何东西。因此,它是一个依赖管理器。

 

Composer解决的问题是:

a) 你有一个依赖N多库的项目。

b) 这些库中一些又依赖于其他的库。

c) 你声明你所依赖的库。

d) Composer找出哪些包的哪个版本将会被安装,然后安装它们(也就是把它们下载到你的项目中)。

 

你可以构建自己的开发包仓库,从你自己的仓库中下载安装包文件,也可以从Packagist上下载安装。

 

三、介绍Packagist

Packagist 是 Composer 的默认的开发包仓库。在Packagist上可以搜索你需要的PHP包,你可以看到当前的版本,每个版本的依赖关系和这个包在GitHub上的地址。

 

四、使用Composer

1.        下载安装composer

运行Composer需要 PHP 5.3.2+以上版本,我的机器是win10系统。

按下win+r,打开cmd,首先进入某个目录,然后依次执行下面3条命令,这里假设你已经正确安装了PHP,并且配置了环境变量。

 

php -r"copy('https://install.phpcomposer.com/installer','composer-setup.php');"

php composer-setup.php
php -r "unlink('composer-setup.php');"

上述 3条命令的作用依次是:

1)     下载安装脚本- composer-setup.php -到当前目录。

2)     执行安装过程。

3)     删除安装脚本。

 

进入刚才的目录,就会发现多了一个composer.phar的文件,这是 Composer的二进制文件。这是一个 PHAR包(PHP的归档),是 PHP的归档格式,可以帮助用户在命令行中执行一些操作。

2.     使用composer可以在局部(项目目录中)也可以在全局(网站根目录中)

1)     局部安装

       将composer.phar复制到项目目录中,确定已经存在composer.json,在命令行中输入命令
       php composer.phar install

将会开始下载依赖,如果提示”pleasecreate a GitHub OAuth token to go over the API rate limit”,访问https://github.com/settings/tokens/创建一个token,然后粘贴在命令行中,然后就会开始下载了。

2)        全局安装

使用局部安装时,需要在每一个项目目录中粘贴composer.phar。

如果不想这样的话,找到php根目录(php.exe存在的目录),将composer.phar粘贴进去,然后创建一个文件,取名composer.bat,在其中写入

       @php "%~dp0composer.phar" %*

现在只需要进入你的项目目录,然后输入以下命令:

       composer install

就可以开始安装依赖了

 

五、Packagist中国全量镜像

一般情况下,安装包的数据(主要是 zip文件)一般是从 github.com 上下载的,安装包的元数据是从 packagist.org 上下载的。

然而,由于众所周知的原因,国外的网站连接速度很慢,并且随时可能被“墙”甚至“不存在”。

“Packagist中国全量镜像”所做的就是缓存所有安装包和元数据到国内的机房并通过国内的CDN进行加速,这样就不必再去向国外的网站发起请求,从而达到加速 composerinstall以及 composer update 的过程,并且更加快速、稳定。因此,即使packagist.org、github.com 发生故障(主要是连接速度太慢和被墙),你仍然可以下载、更新安装包。

要从Packagist中国全量镜像上下载安装,就需要修改配置。两种方法:

1)     修改 composer的全局配置文件(推荐使用)

在命令行中输入以下命令

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

 

2)     修改当前项目的 composer.json 配置文件

打开项目根目录,输入命令

         composer config repo.packagist composer https://packagist.phpcomposer.com
         或者手动修改composer.json文件,在文末添加
"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

六、composer.json

composer.json是composer的配置文件,包含了项目的名称、描述、作者、依赖和版本等信息。

 

七、composer.lock

安装完成后,会看到最后两行

Writing lockfile

Generatingautoload files

就是生成锁文件和自动加载文件。

composer使用composer.lock控制项目的版本,我们使用install命令来处理的时候,它首先会判断composer.lock文件是否存在,如果存在,将会下载相对应的版本(不会在于composer.json里面的配置),这意味着任何下载项目的人都将会得到一样的版本。

如果不存在composer.lock,composer将会通过composer.json来读取需要的包和相对的版本,然后创建composer.lock文件

这样子就可以在你的包有新的版本之后,你不会自动更新了,升级到新的版本,使用update命令即可,这样子就能获取最新版本的包并且也更新了你的composer.lock文件

八、vendor/autoload.php

除了库的下载,Composer还准备了一个自动加载文件,它可以加载 Composer下载的库中所有的类文件。使用它,你只需要将下面这行代码添加到你项目的引导文件中:

require 'vendor/autoload.php';
就可以使用vendor中下载的包了

分享给朋友:
您可能感兴趣的文章:
随机阅读: