这一次,真正掌握composer
Posted phpk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这一次,真正掌握composer相关的知识,希望对你有一定的参考价值。
composer是现代php的基石
现代高级编程语言,依赖管理工具是必不可少的。Java有Maven,Python有pip,Nodejs有npm, 而在composer出现之前,PHP只有被广为诟病的Pear, 由于Pear实在太难用,很少PHP开发者用到这个工具。以致于PHP的开发生态很糟糕。
连一个像样的依赖管理工具都没有,让PHP这门占据了web网站开发?主流市场的语言很尴尬。开发过程中,要用到第三方的类库,需要去下载zip包,然后解压,放到相应的目录,处理好命名空间,自动加载的问题,如果这个第三方包还有其他依赖项,还要再次重复这个流程,看着隔壁家python和node.js一个命令行就搞定,显得php开发人员的操作既原始又滑稽。
这场面,好比:
所幸,金光闪闪的composer驾着七彩祥云来了,PHP终于有了真正意义的依赖管理工具。可以说,composer是现代PHP的基石。
composer解决了项目的依赖关系,且实现了自动加载。开发人员只需要几个命令行,就能获取其他开发者的包,PHP开发工作因此变得如同堆积木,可以根据业务的需求,快速方便地拆解组合代码。
奇怪的是,即使compoer已经诞生好些年了,而且所有主流框架都支持composer,可竟然还有不少PHP开发者不用这个工具。甚至还有人觉得composer加大了PHP的学习难度。
持有这种想法的人,就好像是一辈子都用纸笔手工记账,有朝一日,给他配置了电脑,跟他演示了excel是如何地强大。他不为新事物的强大感到震撼惊喜,而是蹙眉不满地说:“这东西太难学了,我还是习惯用纸笔”。
对于持有这种想法的人,我只能两手一摊。心态衰老的年轻人,如果他的内心一直在装睡,任谁也叫不醒。但时代的步伐可不会因为他们的拉后腿而停止前进,只会把他们远远甩在身后...
初识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来安装第一个包
以monolog
包为例,这个包可以让开发者很方便地将日记写入到文件、数据库或其他储存介质中。
- 在项目根目录新建
composer.json
文件,写入以下内容
{
"require": {
"monolog/monolog": "1.2.*"
}
}
- 执行
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包管理规范
什么是包?只要存在composer.json
文件的代码都可以称之为一个包。
包名称
包名称由作者+项目名称组成。有些包作者名与项目名是相同的,如mustache/mustache
包名称一定要加上作者,避免冲突。如,同样的是小龙女这个角色,不同人演绎的效果完全不同。如果你只是说你要看小龙女,可能给你的是一个陈妍希版本的小笼包,而不是你一直仰慕的仙女刘亦菲。
那么,我们怎么根据一个包的项目名去获取包的信息呢?以mustache
包为例:
- 在packagist查找
点击进入包信息详情页,可以看到包的安装方法以及版本信息
除了在
composer.json
中写包的安装信息,还可以通过composer require mustache/mustache
这种方式直接安装
- 用
composer search
指令查找
查看包的具体信息 composer show mustache/mustache --all
以上是关于这一次,真正掌握composer的主要内容,如果未能解决你的问题,请参考以下文章
Compose | 控件篇 -- TextTextFieldButton