Composer快速入门

什么是Composer

Composer 是PHP的一个依赖管理工具。你可以在你的项目里声明你依赖的库,然后Composer会帮你解决以下问题:找到这些库以及这些库所依赖的库可以安装的版本,然后进行安装。所以Composer是一个依赖管理工具,而不是一个包管理工具(类似Yum或者Apt),因为它是基于每个项目去管理这些包,把这些包安装到项目里的某个目录。

Composer的安装

Composer要求 PHP 5.3.2+ 版本以及一些PHP的配置,如果有不兼容的情况发生,在安装过程中会有提示。有两种方式安装Composer,一是本地安装,而是全局安装。

本地安装

本地安装会把Composer安装到当前的目录下。运行以下命令进行安装:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '070854512ef404f16bac87071a6db9fd9721da1684cd4589b1196c3faf71b9a2682e2311b36a5079825e155ac7ce150d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

 

一共4条命令,它们分别执行以下的操作:

  1. 下载安装文件到当前目录。

  2. 检验安装文件的SHA-384散列。

  3. 运行安装文件。

  4. 删除安装文件。

然后我们就可以运行执行以下命令来运行Compoer了:

$ php composer.phar

 

需要注意的是,第二步检查文件的散列,每一个版本安装文件的散列值都会不同的,所以每次安装最好都到 下载页面 去获取安装代码。或者如果你觉得没有检查安装文件的必要的话,也可以跳过这条命令去执行下面的命令。当然从安全角度考虑,不建议这么做。

全局安装

所谓全局安装,其实就是把Composer安装到 PATH 变量里的某个目录中,这样你就可以从任何地方去访问Composer了。个人也建议这么做。我们只需要把本地安装的composer执行文件移动到全局目录下即可:

$ mv composer.phar /usr/local/bin/composer

 

这样你就可以在任何地方直接运行 composer 命令了。后续如没有特别说明,都是在全局安装的情况下执行命令。

安装选项

Composer安装时支持3个选项。

--install-dir

通过 --install-dir 选项可以修改Composer的安装路径,例如如果我们想把Composer安装在 bin 目录下:

$ php composer-setup.php --install-dir=bin

 

--filename

通过 --filename 选项,我们可以修改Composer执行文件的名称(默认为composer.phar)。例如:

$ php composer-setup.php --filename=composer

 

--version

如果想安装指定版本的Composer,可以使用 --version 选项:

$ php composer-setup.php --version=1.0.0-alpha8

 

手动下载

除了上面的安装方式外,还可以直接下载执行文件,请到 下载页面 进行下载。

Composer的更新

更新Composer很简单,只需要执行以下命令:

$ composer selfupdate
Updating to version 1.1.2 (stable channel).Downloading: 100%         
Use composer self-update --rollback to return to version 06c45623d76457562cecbcf2245f904aa0f63a87# 或者(两者是等效的)
$ composer self-update

 

如果想进行版本的回滚,可以使用以下命令:

$ composer selfupdate --rollback
Rolling back to version 2016-05-26_16-11-16-06c4562.

 

Composer的基本使用

composer.json文件

安装完Composer后,想要在项目里开始使用它,你唯一需要做的就是创建一个composer.json 文件。这个文件描述了你这个项目所依赖的包以及一些其他的元信息。

require键

通过require这个配置项,我们可以指定项目的依赖。假设我们项目需要用到monolog/monolog 这个日志库,那么我们可以这样配置 composer.json 文件:

{"require": {"monolog/monolog": "1.0.*"}
}

 

require 的值是一个对象,对象里的每一个键对应一个依赖,通过键名为包的名称,键值为包的版本。

包的名称

包名由vendor名和项目名组成,这样可以保证包名的唯一性。项目名可以重复,但是vendor名每个人都不一样。以 monolog/monolog 为例,vendor名和项目名都是monolog 。

包的版本

在上面的例子中,我们要求 monolog/monolog 的版本为 1.0.* ,表示任何的1.0的开发分支版本都满足要求。版本的指定方式有很多种,在后面的文章中会进行详细的解说。

安装依赖

创建完 composer.json 文件并配置好 require 后,我们就可以安装依赖了,只需要运行以下的命令:

$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)- Installing monolog/monolog (1.0.2)Downloading: 100%         Writing lock file
Generating autoload files

 

Composer会根据上面配置的版本约定下载最新版本的 monolog/monolog 到默认目录 vendor 下。

composer.lock文件

运行完上面的 install 命令后,你会发现除了 vendor 目录,还会多了一个composer.lock 文件。这个文件保存了项目已经安装的每个包的具体版本。在运行install 命令的时候,如果存在这个文件,则Composer会根据这个文件下载对应版本的包。这样的好处是可以保证各个环境的依赖的版本一致,否则如果没有这个文件,每个环境在运行 install 时可能下载到的版本就不一致了。所以建议把composer.lock 文件也放到版本控制里。

更新依赖

要更新依赖,只需要运行 update 命令:

# 更新所有的依赖
$ composer update# 更新某个依赖
$ composer update monolog/monolog

 

自动加载

下载完依赖后,我们可以开始使用依赖所提供的库了。Composer会为下载的库创建自动加载文件 vendor/autoload.php ,我们只需要包含这个文件就能轻松的调用各个库的功能。以 monolog/monolog 为例:

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

 

我们不用关心库文件的加载问题,Composer的 autoload.php 文件已经帮我们处理好了各个库的自动加载。

Packagist 镜像

至此,我们安装好了Composer,也知道了它的基本用法,基本可以快乐的玩耍了。但是众所周知,由于某些原因,github和packagist在国内有时会访问不了,或者速度很慢,这就会导致使用Composer时的各种不爽。还好我们国内有个 镜像 可以解决这个问题,只需要把仓库的路径修改为镜像的路径即可。

有两种方式,一是修改Composer的全局配置(推荐的方式):

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

 

这个命令会修改Composer的全局配置文件 config.json 。二是修改单个项目的配置:

$ composer config repo.packagist composer https://packagist.phpcomposer.com

 

这个命令会修改项目下的 composer.json 文件,添加如下的配置信息:

"repositories": {"packagist": {"type": "composer","url": "https://packagist.phpcomposer.com"}
}

 

当然你也可以直接手动修改 composer.json 文件,添加上面那段配置信息。

详情请访问: http://pkg.phpcomposer.com/ 。

参考

  • https://getcomposer.org/

  • http://pkg.phpcomposer.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

龙芯上市是自主路线被广泛认可的风向标

日前,龙芯通过科创板上市委员会审核,此次计划募资35.12亿元。其中,12.58亿元用于先进制程芯片研发及产业化项目,10.54亿元用于高性能通用图形处理器芯片及系统研发项目;12亿元用于补充流动资金。公开材料还披露了很多细…

“批判”按劳取酬

“批判”按劳取酬<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Jack zhai按劳取酬的意思就是付出多少劳动&#xff0c;就获得多少报酬&#xff1b;这曾经是我认为最为合理的老板与员工之间的合约关系。然而近几年&#xff0c;…

携程编程大赛 (预赛第二场)第一题【剪刀石头布】

Problem Description现有M个人一起玩剪刀石头布&#xff0c;以1&#xff0d;M编号&#xff0c;每人出一种&#xff0c;出过不再改变&#xff0c;但是我们并不知道它到底是哪一种。 &#xff08;其中石头赢剪刀&#xff0c;剪刀赢布&#xff0c;布赢石头&#xff0c;一样则平&am…

AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto

正如in Gradle projects,always usehttp://schemas.Android.com/apk/res-auto for custom attributes所说的 将eclipse中 http://schemas.android.com/apk/res/com.xxx.xxx 换成 http://schemas.android.com/apk/res-auto 这样Gradle就会自动查找自定属性的

量子计算机是程序员的未来,研究者:量子计算机一旦成功问世,时间也许会失去存在的意义...

贝尔实验室的科学家索尔&#xff0c;自从在1994年35界计算科学基础年会上提出量子算法后&#xff0c;立刻引起全世界科学界的轰动&#xff0c;量子计算机的研究热潮自此到来。量子计算机的运行方式以及存储计算方式&#xff0c;都与经典计算机存在着很大不同。经典计算机的存储…

.NET 现代化动态 LINQ 库 Gridify

动态 LINQ大家好&#xff0c;我是等天黑, 这次继续介绍开源项目&#xff0c;Gridify 是一个现代化动态 LINQ 库&#xff0c;它以最简单的方式将您的字符串转换为 LINQ 查询&#xff0c;并且有出色的性能。它还提供了一种使用基于文本的数据应用过滤、排序和分页的简单方法&…

Android之Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头

1&#xff09;怎样修改左边这个小箭头的颜色&#xff1f;2&#xff09;怎样修改右边这三个点的颜色、怎样把这三个点替换成我自己的图标&#xff1f;3&#xff09;怎样让“交易清单”这4个字居中显示&#xff1f; 首先设置Theme为AppCompat.NoActionBar。 (1)toolbar可以通过设…

brew mysql 添加修改mysql配置

为什么80%的码农都做不了架构师&#xff1f;>>> brew安装的MySQL是没有默认配置文件的&#xff0c;因此Mysql使用默认配置启动。我们需要手动创建my.cnf去覆盖默认配置。在/usr/local/opt/mysql 下确实有 my.cnf 但是并没有在启用中&#xff0c;应该是作为一个示例…

微型计算机名词术语,微型计算机及接口技名词解释题及解答题.doc

微型计算机及接口技名词解释题及解答题微处理器&#xff1a;由一片或几片大规模集成电路组成的中央处理器。主要部件&#xff1a;由运算器、控制器、寄存器组组成。微型计算机&#xff1a;以微处理器为基础&#xff0c;配以内存储器以及I/O接口电路和相应的辅助电路构成的裸机。…

LINUX BASH SHELL,小小学习一下

注意点要注意的&#xff1a; 整数运算一般通过 let 和 expr 这两个指令来实现&#xff0c;如对变量 x 加 1 可以写作&#xff1a;let "x $x 1" 或者 xexpr $x 1 两个比较表格要记得&#xff1a; 对应的操作 整数操作 字符串操作 相同 -eq 不同 -ne ! 大…

“人肉”背后隐藏的网络风险

“遭此不幸”的演艺界大碗包括 Jay-Z、碧昂斯 (Beyonce)、布兰妮。斯皮尔斯 (Britney Spears) 以及金。卡戴珊 (Kim Kardashian) 等&#xff0c;他们的个人信息被公诸于众。此外&#xff0c;这次泄露事件的受害者甚至包括美国第一夫人米歇尔。奥巴马 (Michelle Obama)、副总统乔…

数学系都是怎么发「新年祝福」的?

全世界只有3.14 % 的人关注了爆炸吧知识过年啦&#xff01;你都收到什么样的祝福&#xff1f;&#xff08;快到留言区留言&#xff09;不过看来看去&#xff0c;还是超模君曾经收到的一条祝福最特别了&#xff01;超模君今天把这份新年祝福分享给大家&#xff1a;长按图片可保存…

NET 6 中新增的LINQ 方法

.NET 6 中添加了许多 LINQ 方法。下表中列出的大多数新方法在 System.Linq.Queryable 类型中具有等效方法。欢迎关注如果你刻意练习某件事情请超过10000小时&#xff0c;那么你就会达到世界级别今晚打老虎TryGetNonEnumeratedCount 尝试在不强制枚举的情况下确定序列中的元素数…

Android之startService与bindService的区别

Android执行Service有两种方法&#xff0c;一种是startService&#xff0c;一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时&#xff0c;Service会经历onCreate->onStartCommand。当执行stopService时&…

DCOS实践分享(6):基于DCOS的大数据应用分享

Open DC/OS大中华区官方发布会在京隆重召开 DCOS领域诞生了一个100%开源的企业级Datacenter Operating System版本&#xff0c;即DC/OS。Linker Networks及其合作伙伴Microsoft, Cisco, HPE, Mesosphere, Verizon等于4月19日开启全球发布&#xff0c;而Linker Networks作为初创…

计算机技术在数学教学中的应用,信息技术在数学教学中应用

数学是一门高度抽象的学科&#xff0c;高度抽象的概念&#xff0c;科学简洁的数学语言&#xff0c;严谨的逻辑体系&#xff0c;深刻的数学思想方法&#xff0c;都使得相当数量的学生难于理解数学。处理好教与学的关系&#xff0c;选择适当的教学模式&#xff0c;设计优化的教学…

CSV格式数据如何导入MySQL?

经常有客户咨询如何将CSV文件导入到MySQL数据库中&#xff0c;特写此文介绍一种方便、快捷的方法。 我们要使用的辅助工具是著名的MySQL管理软件&#xff1a;Navicat for MySQL 1&#xff09;我准备了一个字符编码为UTF-8的标准CSV文件&#xff0c;总共有2001条记录&#xff08…

subclipse用法

SUBCLIPSE的使用方法. 针对ECLIPSE的SUBVERSION插件http://blog.csdn.net/kimsung/article/details/5277873 SubVersion和Subclipse的简单使用方法http://subclipse.group.iteye.com/group/wiki/1708-subversion-and-simple-to-use-subclipse