现代高级编程语言,依赖管理工具是必不可少的。Java有Maven,Python有pip,Nodejs有npm, 而在composer出现以前,PHP只有被广为诟病的Pear, 因为Pear实在太难用,不多PHP开发者用到这个工具。以至于PHP的开发生态很糟糕。php
连一个像样的依赖管理工具都没有,让PHP这门占据了web网站开发�主流市场的语言很尴尬。开发过程当中,要用到第三方的类库,须要去下载zip包,而后解压,放到相应的目录,处理好命名空间,自动加载的问题,若是这个第三方包还有其余依赖项,还要再次重复这个流程,看着隔壁家python和node.js一个命令行就搞定,显得php开发人员的操做既原始又滑稽。node
这场面,比如:python
依赖管理工具大比拼web
所幸,金光闪闪的composer驾着七彩祥云来了,PHP终于有了真正意义的依赖管理工具。能够说,composer是现代PHP的基石。数据库
composer解决了项目的依赖关系,且实现了自动加载。开发人员只须要几个命令行,就能获取其余开发者的包,PHP开发工做所以变得如同堆积木,能够根据业务的需求,快速方便地拆解组合代码。npm
奇怪的是,即便compoer已经诞生好些年了,并且全部主流框架都支持composer,可居然还有很多PHP开发者不用这个工具。甚至还有人以为composer加大了PHP的学习难度。编程
持有这种想法的人,就好像是一生都用纸笔手工记帐,有朝一日,给他配置了电脑,跟他演示了excel是如何地强大。他不为新事物的强大感到震撼惊喜,而是蹙眉不满地说:“这东西太难学了,我仍是习惯用纸笔”。json
对于持有这种想法的人,我只能两手一摊。心态衰老的年轻人,若是他的心里一直在装睡,任谁也叫不醒。但时代的步伐可不会由于他们的拉后腿而中止前进,只会把他们远远甩在身后...composer
composer的安装步骤,在composr中文社区有详细的说明,点击查看框架
安装的流程很简单,归结为如下几步:
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" # 下载安装脚本 - composer-setup.php - 到当前目录 php composer-setup.php # 执行安装过程 php -r "unlink('composer-setup.php');" # 删除安装脚本 sudo mv composer.phar /usr/local/bin/composer # 全局安装 composer config -g repo.packagist composer https://packagist.phpcomposer.com # 更换国内镜像源
安装完成后,查看composer版本
composer
接下来,咱们用composer来安装第一个包
以monolog
包为例,这个包可让开发者很方便地将日记写入到文件、数据库或其余储存介质中。
composer.json
文件,写入如下内容{ "require": { "monolog/monolog": "1.2.*" } }
composer install
指令安装包依赖composer install
目录结构
composer已经为咱们下载了monolog
包,且生成了autoload.php
自动加载文件
新建monolog.php
文件,内容以下:
<?php require 'vendor/autoload.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; // create a log channel $log = new Logger('name'); $log->pushHandler(new StreamHandler('monolog.log', Logger::WARNING)); // add records to the log $log->warn('警告日志'); $log->err('错误日志');
运行脚本:
learnComposer php monolog.php
生成了日志文件monolog.log
[2018-07-12 14:18:14] name.WARNING: 警告日志 [] [] [2018-07-12 14:18:14] name.ERROR: 错误日志 [] []
只需一个配置文件composer.json
,一行指令composer install
,代码中引入autoload.php
,便可完美地使用第三方包。接下来分析composer的包管理规范
什么是包?只要存在composer.json
文件的代码均可以称之为一个包。
包名称由做者+项目名称组成。有些包做者名与项目名是相同的,如mustache/mustache
包名称必定要加上做者,避免冲突。如,一样的是小龙女这个角色,不一样人演绎的效果彻底不一样。若是你只是说你要看小龙女,可能给你的是一个陈妍希版本的小笼包,而不是你一直仰慕的仙女刘亦菲。
那么,咱们怎么根据一个包的项目名去获取包的信息呢?以mustache
包为例:
搜索包
点击进入包信息详情页,能够看到包的安装方法以及版本信息
安装包
除了在
composer.json
中写包的安装信息,还能够经过composer require mustache/mustache
这种方式直接安装
包信息
composer search
指令查找composer search
查看包的具体信息 composer show mustache/mustache --all
composer show