专栏首页IT码农Composer系列之一

Composer系列之一

一个更加包容和宽泛的Composer

一个聪明的指挥家。

逻辑是不复杂的,这货就是帮我们管理扩展及其依赖关系。

比如我在开发一个php网站,突然需要二维码生成功能,自己写太麻烦,这个时候我可以去composer的扩展列表里看一看,如果有直接下载下来用就可以了,当然可能这个扩展还需要另外一个扩展或库。

而我们不用担心这个,composer能帮我们下载二维码生成扩展及它所需要的各种库直至正常运行。

这就是管理扩展及其依赖关系。Composer是个很贴心的家伙。

老大哥的接班人

在Composer诞生约10年前,就是2000年的PHP开发者会议上有个叫Stig S. Bakken的人提出了一个想法,其目的是为PHP社区提供可以重复使用的库,并叫它为Pear。我想很多人听过或用过这货。

Composer和Pear的目的差不多。

一个疑问就是Pear比Composer诞生早了10年,但是为何它英雄败北了那

总结几点不同吧

  • Pear必须全局安装,而Composer可以全局和局部安装,Composer具有更好的安装渠道。
  • Pear所有提交的代码必须经过Pear-review,这也注定了Pear上扩展包的版本更替会慢的很,而Composer没有这个限制,你能跟上开发者的版本更替。
  • 结构限制,Pear相对严格,而Composer灵活的多,你可以在项目的任何时期引入composer扩展包,任何一个文件夹(默认为vendor)。
  • PHP高级属性的不断出现也是推动Composer更快前进的一个原因。

上面原因不是全部,而且谨慎、守规矩、渠道限制也未必是坏事,但是它的确影响了Pear的发展,而Composer更加具有冒险精神、更加包容和灵活。

对于e文好的可以看下这篇文章,The rise of Composer and the fall of PEAR,让Pear安静的死去吧。

Composer来了

2012年,就是Pear发布12年后的一天,Nils Adermann及Jordi Boggiano提出Composer工具并发布第一个版本。

这一天是2012年3月1日,当然在中国这个日期也很重要 - 【小学生开学】。

Composer的使命就是帮你为项目自动安装所依赖的开发包,很多理念都借鉴自 npm 和 Bundler, 包含了一个依赖解析器,用来处理开发包之间复杂的依赖关系;另外,它还包含了下载器、安装器等有趣的东西。

这个就是Composer创始人之一Nils Adermnn的推特,竟然美国前总统奥巴马也关注了它,赶紧看看你的微博啥的。

Composer就这样一路前行,有几个网站你要知道

Composer 就这样来了

安装Composer

Composer的运行是有要求的,你的机器上必须有PHP环境并且版本不能低于PHP5.3.2,考虑到多数伙伴都是Win上开发,我们就以这个为例。

安装程序安装

这个很方便,不过我没太用过,Composer提供了一个安装程序( https://getcomposer.org/Composer-Setup.exe ),好处是它将安装最新版本的 Composer ,并设置好系统的环境变量,因此你可以在任何目录下直接使用 composer 命令。

手动安装

按照官方文档来是最靠谱的

C:\Users\username>cd C:\bin
C:\bin>php -r "readfile('https://getcomposer.org/installer');" | php

我们来说明下官方给的代码,这是一个PHP命令行模式。

  • -r 表示可以在命令行内运行单行 PHP 代码,不需要PHP的开始和结束符
  • readfile好理解,该函数读入一个文件并写入到输出缓冲。
  • | php 用php执行刚刚readfile读到缓冲区的文件。

就是说你可以先在浏览器 https://getcomposer.org/installer 下载下来installer,然后执行下面代码,结果是一样的

php installer

让我们开始下载

要注意,上面命令需要你的php打开php_openssl支持。

上面是一种方法,还有你可以通过curl获取远程的文件,如下代码

curl -sS https://getcomposer.org/installer | php

和上面的思路一样,下载installer后用php对其执行进行继续的工作。

现在通过上面的行为,我将composer.phar下载到我的项目中(局部)。

composer.phar

使用 composer.phar 我们就可以进行composer包的安装和管理了,composer.phar其实是一个pear包,什么意思?它是一个php的包,看下结构。

我们可以通过它做事情了,比如 -V获得composer当前版本。

php composer.phar -V

不止这些命令,我们看看(输入小v,-v)

php composer.phar -v

你会看到很多很多命令,太多我就不截图了,后面我们会都说明到,比如

  • about
  • archive
  • config
  • global
  • home
  • install
  • update
  • require
  • search
  • self-update
  • show
  • .......

这些命令让我们和composer服务器建立了联系。

全局安装

很高兴现在我们可以使用它了,但是似乎每次输入 php composer.phar 老麻烦,接下来我们简化下工作。

  • 首先找到你的php安装目录(就是php.exe所在的目录,我们假设为D:\PHP)
  • 把刚下载的composer.phar弄到上面目录D:\PHP里
  • 在D:\PHP新建一个名为composer.bat的文件,内容为 @php "%~dp0composer.phar" %*
  • 添加php环境变量。右键我的电脑-属性-高级系统设置-环境变量。找到“系统变量”中名为Path,双击编辑,在最后加入分号和php目录位置,如;D:\PHP

最后一条是让命令行直接写php可以生效,这样上面的composer.bat才可以。如果是linux和mac会简单的多。

总结

到这里composer就到你的机器上了,正常来说我们可以讲那些高大上的参数了,不过在安装过程中可能遇到很多问题,这些问题可能和网络相关,可能和服务器相关,下一篇我们先汇总下,集中填坑。

G

M

T

Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu

AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu

Text-to-speech function is limited to 200 characters

Options : History : Feedback : Donate

Close

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • yii2 扩展和自定义(函数 , 组件 , 模块)

    自定义辅助函数 入口文件加载 目录下创建一个helpers目录下创建functions.php 文件 <?php

    botkenni
  • phpmyadmin,访问主页报错: Error during session start; please check your PHP and/or webserver log file and c

    部署完phpmyadmin,访问主页报错: Error during session start; please check your PHP and/or ...

    botkenni
  • Yii2.0 RESTful API快速搭建教程

    这是安装Yii2.0的首选方法。如果你还没有安装 Composer,你可以按照这里的说明进行安装。

    botkenni
  • 霍尼或将发布量子计算机;孙正义在美举办“IPO预备峰会”;腾讯云成Gartner云AI开发者魔力象限唯一中厂商|ITDaily

    据外媒报道,日本软银集团CEO孙正义周二在纽约为其投资组合公司举办了首次“IPO预备峰会”,向可能支持它们上市的华尔街投资者介绍它们。这次活动没有对媒体开放,一...

    用户6543014
  • 国内 PHP Composer 镜像列表

    Composer 是一个 PHP 包管理的系统,现在越来越多的 PHP 使用 Composer 来管理包。比如 FastAdmin、 ThinkPHP、Lara...

    Tinywan
  • 科学瞎想系列之一〇四 NVH那些事(9)

    【部分来自网络如有侵权敬请邮箱联系。联系邮箱laolicsiem@126.com】

    标准答案
  • 高考数据究竟隐藏着怎样的惊人秘密?

    本文整理自网络 十年寒窗无人问,一举成名天下知。 说到高考,很多人知道的无非就是状元,而再其次的,却真的是无人问津。高考学子十多年的寒窗苦读,终于在今明两天可以...

    CDA数据分析师
  • 前端面试题总结(持续更新。。)

    Ewall
  • Python:requests:详解超时和重试

    网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应。 超时又可分为连接超时和读取超时。

    丹枫无迹
  • Spring周边:XML

    DOCTYPE 声明为文档提供一个空间,通过引用外部文件、通过直接声明或通过这两种方式来标识其根元素和文档类型定义 (DTD)。DOCTYPE 声明可以包含下列...

    WEBJ2EE

扫码关注云+社区

领取腾讯云代金券