什么是composer
文章目录
- 写作初衷
- composer的概念
- 安装注意
- composer的使用方法
- composer.json
- composer.lock
- 包仓库 Packagist
- Platform packages
- Autoloading
- 什么是包
- 命令行指令
写作初衷
在跟着某个laravel教程学习的时候,在composer上遇到了一些障碍,想通过学习解决问题。本文大体是根据composer官方的文档,再润色以个人的理解和想法。希望最后能够解决问题,并为本人在互联网上留下一点痕迹,如果有任何错误,还请不吝啬的指出吧。
composer的概念
composer是一款依赖管理工具,跟一些同概念和作用的其它语言下的同类工具不同,composer有着自己的一些特色,如同php和其他语言一样。
首先,composer依赖的实体是某一具体的项目,它通常将所注册的,项目所需依赖统一放置在项目根目录的一个名叫vendor的目录之下。
也无全局概念,仅此而已,如同php一样简单。
安装注意
composer需要php5.3.2+,被老旧项目所折磨的phper,将会遗憾的无缘php的现代化新面貌了。
composer的使用方法
composer.json
这是composer的核心文件,文件内部描绘了一个json对象,其中的键值对表达了项目所需的一些元数据和依赖的包和其版本的区间等。
{"require": {"monolog/monolog": "1.0.*"}
}
require键值写明了依赖包及其版本约束。
`composer install
该命令进行下载和更新文件。
composer.lock
当第一次执行了composer install
后,会将此次成功获取的依赖做一个元数据快照,写入composer.lock之中。
在存在composer.lock情况下执行composer install
,则依赖所需版本则会最先参照composer.lock中。即在团队合作的情况下,可以用composer.lock对所有人进行约束,将大伙的依赖包的版本约束成同一版本。
composer update
该命令可以,在依赖包的约束区间内再做一次检查,下载约束下的最新版本(如果有的话),并且更新composer.lock。
包仓库 Packagist
可以指定相应的包下载源,如未指定,则默认为Packagist,也是主要的composer包仓库。
Platform packages
平台包,个人理解为php的元数据包。对于composer而言,哪怕是被抽象的包,也可以做出具体的版本约束。
比如:
{"require": {"php": "^7.2.5","monolog/monolog": "1.0.*"}
}
进行约束php的版本。
Autoloading
composer提供了一套完善的自动加载机制。
require __DIR__ . '/vendor/autoload.php';$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
它很灵活自由,多数框架把类的加载交由composer来管理,只需注册一些简单的信息。
{"autoload": {"psr-4": {"Acme\\": "src/"}}
}
再执行
composer dump-autoload
将会生成vendor/autoload.php文件
autoload.php文件会返回一个加载器对象,所以也支持运行时的修改配置
$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
什么是包
你站在桥上看风景,看风景的人在楼上看你。
依赖其他包的项目,亦是可以成为被被人依赖的包。
{"name": "acme/hello-world","version": "1.0.0","require": {"php": "^7.2.5","monolog/monolog": "1.0.*"}
}
version这一元数据,应当仅使用在未使用VCS的情况下,不然会导致冲突。
composer.lock不会对依赖它的包产生影响
发布相关的内容暂时省略。。。
命令行指令
composer init
自动生成composer.json文件
composer install
安装
composer update
更新依赖
composer require
不指定包的情况下,将对composer.json文件中的修改进行安装和更新。也刻在命令行的require后追加指定的包。
composer remove
移除指定的依赖
composer check-platform-reqs
检查平台包
composer global
以此开头的命令,其执行目录被视为在 COMPOSER_HOME下。
composer search
搜索
composer outdated
检查在约束下,是否有可更新的包。
等等。。。
什么是composer相关推荐
- composer PHP Fatal error: Allowed memory size of 报错解决
执行以下命令(安装多线程) php composer.phar require hirak/prestissimo 出现以下提示 PHP Fatal error: Allowed memory siz ...
- CentOS7安装Composer
1.使用命令下载 curl -sS https://getcomposer.org/installer | php 2.下载之后设置环境变量 mv composer.phar /usr/local/b ...
- composer爆错:zlib_decode():data error
昨晚用nginx运行Yii的一个开源小项目,结果composer安装依赖一直报错,如下 Failed to decode response: zlib_decode(): data error 如果遇 ...
- compser可以检查php扩展吗,composer扩展
## 一些简单的thinkphp扩展 1. 正则表达式的扩展: PHP7以上: ``` composer req gherkins/regexpbuilderphp ``` PHP5 ``` comp ...
- 简单安装与使用composer
1.下载composer.exe工具,然后进行安装 这一步需要找到你使用的php版本文件 2.windows+r cmd 输入composer 安装中国镜像,提高使用效率 https://p ...
- 用composer安装laravel-bjyblog
前面讲了两行命令composer的安装,现在我们来操作一下composer安装基于laravel的博客laravel-bjyblog.测试环境是linux,bt面板,php7.2安装扩展fileinf ...
- Packagist / Composer 中国全量镜像
Packagist 镜像 请各位使用本镜像的同学注意: 本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 https 协议!请各位同学 按照下面所示的两个方法将 http://pa ...
- laravel项目composer安装
1.下载 Composer (https://pkg.phpcomposer.com/#how-to-install-composer) 安装前请务必确保已经正确安装了 PHP.打开命令行窗口并执行 ...
- Composer 篇
学习网站 Composer 中文网 资源包 Packagist Packagist / Composer 中国全量镜像 如何安装 Composer 下载 Composer 安装前请务必确保已经正确安装 ...
- 【完结】利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存
本教程示例代码见 https://github.com/johnlui/My-First-Framework-based-on-Composer 回顾 上两篇文章中我们完成了 View 视图加载类和 ...
最新文章
- 1042. 托普利兹矩阵
- android中存放程序资源,Android 工程中存放各种程序资源的目录是()
- iOS与Opencv的探秘之Opencv认识,适配Xcode
- 关于luci的几个问题二
- P4570 [BJWC2011]元素
- 《软件调试分析技术》学习笔记
- C#深入解析数据类型
- 《Linux编程》学习笔记 ·003【Shell编程】
- java修改cdm_Java™ ORM框架CDM教程 增删改查(四)
- 补间动画android
- Leetcode 70.爬楼梯
- 微信开发者工具在C盘下User Data有啥用,能删掉吗?占用空间超大
- pgloader mysql_pgloader 学习(四)一些简单操作例子
- 微信公众号文章采集的几种方案
- [置顶] 一个程序员的科幻小说
- 在编写网站的时候,给一个div设置背景图片,怎么让这个图片随着div大小的改变,而等比例的缩放。
- 仿企查查、天眼查关系图以及架构图(双向树,集团图谱,组织架构图谱,企业图谱,网络拓扑,人物关系网络)
- ABAQUS均匀受力,边界条件对称,但结果云图不对称
- 地图平面像素坐标 Plane Coordinates
- 让我们跳过中年危机,直接聊聊如何善终
热门文章
- xilinx赛灵思官网数据加速卡入门指南
- MindSpore简介
- matlab ode45输出数值解,ode45求微分方程组数值解的问题
- web前端——table标签
- ie10和ie11支持html5吗,IE11兼容模式和IE10兼容模式有什么区别
- html 转换 swf文件怎么打开,swf文件无法打开 swf格式在电脑上怎么打开?swf格式转换的时候提示不是音视频文件...
- 【实验分享】Switch基本配置
- android 动画x轴旋转,写给小白——Android旋转动画(3个方向的旋转)
- NOMT 近似在线的多目标跟踪算法
- LimeSDR 实验(一)