php composer使用教程,PHP Composer工具使用介绍, PHP依赖管理的新时代

正 文:

Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

对于现代语言而言,包管理器基本上是标配。Java 有 Maven,Python 有 pip,Ruby 有 gem,Nodejs 有 npm。PHP 的则是 PEAR,不过 PEAR 坑不少:依赖处理容易出问题

配置非常复杂

难用的命令行接口

好在我们有 Composer,PHP依赖管理的利器。它是开源的,使用起来也很简单,提交自己的包也很容易。

composer之linux设置PATH环境变量,以便全局使用:

建立软连接命令:ln -s 源文件 目标文件

如: ln -s /root/composer.phar /usr/local/bin/composer

composer设置中国镜像:

修改 composer 的全局配置文件(推荐方式)

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

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

列出 composer 的全局配置信息:

composer config -l -g

更新依赖包

composer update

如果版本控制里没有包含vendor文件夹,则执行全新安装依赖包

composer install

新部署项目时(包括复制)注意要重新生成APP_KEY

php artisan key:generate

用composer安装laravel指定版本:

先cd到目标目录下,然后执行,

如安装5.1版本到pro1目录下(使用国内镜像):

composer create-project laravel/laravel pro1 5.1.* --prefer-dist

--prefer-dist选项:优先使用压缩包,而不是克隆源代码。

PHP 开发者该知道的 5 个 Composer 小技巧:

1. 仅更新单个库

只想更新某个特定的库,不想更新它的所有依赖,很简单:composer update foo/bar

此外,这个技巧还可以用来解决“警告信息问题”。你一定见过这样的警告信息:Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.

擦,哪里出问题了?别惊慌!如果你编辑了composer.json,你应该会看到这样的信息。比如,如果你增加或更新了细节信息,比如库的描述、作者、更多参数,甚至仅仅增加了一个空格,都会改变文件的md5sum。然后Composer就会警告你哈希值和composer.lock中记载的不同。

那么我们该怎么办呢?update命令可以更新lock文件,但是如果仅仅增加了一些描述,应该是不打算更新任何库。这种情况下,只需update nothing:$ composer update nothing

Loading composer repositories with package information

Updating dependencies

Nothing to install or update

Writing lock file

Generating autoload files

这样一来,Composer不会更新库,但是会更新composer.lock。注意nothing并不是update命令的关键字。只是没有nothing 这个包导致的结果。如果你输入foobar,结果也一样。

如果你用的Composer版本足够新,那么你可以直接使用--lock选项:composer update --lock

2. 不编辑composer.json的情况下安装库

你可能会觉得每安装一个库都需要修改composer.json太麻烦,那么你可以直接使用require命令。composer require "foo/bar:1.0.0"

这个方法也可以用来快速地新开一个项目。init命令有--require选项,可以自动编写composer.json:(注意我们使用-n,这样就不用回答问题)$ composer init --require=foo/bar:1.0.0 -n

$ cat composer.json

{

"require": {

"foo/bar": "1.0.0"

}

}

3. 派生很容易

初始化的时候,你试过create-project命令么?composer create-project doctrine/orm path 2.2.0

这会自动克隆仓库,并检出指定的版本。克隆库的时候用这个命令很方便,不需要搜寻原始的URI了。

4. 考虑缓存,dist包优先

最近一年以来的Composer会自动存档你下载的dist包。默认设置下,dist包用于加了tag的版本,例如"symfony/symfony": "v2.1.4",或者是通配符或版本区间,"2.1.*"或">=2.2,<2.3-dev"(如果你使用stable作为你的minimum-stability)。

dist包也可以用于诸如dev-master之类的分支,Github允许你下载某个git引用的压缩包。为了强制使用压缩包,而不是克隆源代码,你可以使用install和update的--prefer-dist选项。

下面是一个例子(我使用了--profile选项来显示执行时间):$ composer init --require="twig/twig:1.*" -n --profile

Memory usage: 3.94MB (peak: 4.08MB), time: 0s

$ composer install --profile

Loading composer repositories with package information

Installing dependencies

- Installing twig/twig (v1.12.2)

Downloading: 100%

Writing lock file

Generating autoload files

Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s

$ rm -rf vendor

$ composer install --profile

Loading composer repositories with package information

Installing dependencies from lock file

- Installing twig/twig (v1.12.2)

Loading from cache

Generating autoload files

Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s

这里,twig/twig:1.12.2的压缩包被保存在~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip。重新安装包时直接使用。

5. 若要修改,源代码优先

当你需要修改库的时候,克隆源代码就比下载包方便了。你可以使用--prefer-source来强制选择克隆源代码。composer update symfony/yaml --prefer-source

接下来你可以修改文件:composer status -v

You have changes in the following dependencies:

/path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml:

M Dumper.php

当你试图更新一个修改过的库的时候,Composer会提醒你,询问是否放弃修改:$ composer update

Loading composer repositories with package information

Updating dependencies

- Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0)

The package has modified files:

M Dumper.php

Discard changes [y,n,v,s,?]?

为生产环境作准备

最后提醒一下,在部署代码到生产环境的时候,别忘了优化一下自动加载:composer dump-autoload --optimize

安装包的时候可以同样使用--optimize-autoloader。不加这一选项,你可能会发现20%到25%的性能损失。

Packagist 镜像用法

有两种方式启用本镜像服务:系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。见“例1”

单个项目配置: 将配置信息添加到某个项目的 composer.json 文件中。见“例2”

例1:修改 composer 的全局配置文件(推荐方式)

打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:composer config -g repo.packagist composer https://packagist.phpcomposer.com

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

打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是composer.json 文件所在目录),执行如下命令:composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):"repositories": {

"packagist": {

"type": "composer",

"url": "https://packagist.phpcomposer.com"

}

}

OK,一切搞定!试一下 composer install 来体验飞一般的速度吧!

镜像说明:

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

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

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

如何安装 Composer安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。

打开命令行并执行下列命令安装最新版本的 Composer (以下指令摘自 https://getcomposer.org/download/,请前往查看最新的安装指令):php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php

php composer-setup.php

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

执行第一条命令下载下来的 composer-setup.php 脚本将简单的检测 php.ini 中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的 composer.phar 文件到当前目录。

上述 3 条命令的作用依次是:下载安装脚本(composer-setup.php)到当前目录。

执行安装过程。

删除安装脚本 -- composer-setup.php 。

局部安装

上述下载 Composer 的过程正确执行完毕后,可以将 composer.phar 文件复制到任意目录(比如项目根目录下),然后通过 php composer.phar 指令即可使用 Composer 了!

全局安装

全局安装是将 Composer 安装到系统环境变量 PATH 所包含的路径下面,然后就能够在命令行窗口中直接执行 composer 命令了。

Mac 或 Linux 系统:打开命令行窗口并执行如下命令将前面下载的 composer.phar 文件移动到/usr/local/bin/ 目录下面:sudo mv composer.phar /usr/local/bin/composer

Windows 系统:找到并进入 PHP 的安装目录(和你在命令行中执行的 php 指令应该是同一套 PHP)。

将 composer.phar 复制到 PHP 的安装目录下面,也就是和 php.exe 在同一级目录。

在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。@php "%~dp0composer.phar" %*

最后重新打开一个命令行窗口试一试执行 composer --version 看看是否正确输出版本号。

最后提示:不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本哦!

【参考】:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值