【学习笔记】项目进行过程中遇到有关composer的问题

news2024/11/19 20:19:39

composer.json内容详解

以项目中的composer.json为例,参考文档。

file

  • name:composer包名
  • type:包的类型,project和library两种
  • keywords:关键词,方便别人在安装时通过关键词检索(没试过,好像是找不到包会推荐关键词相关的包)
  • description:包描述
  • license:许可协议,如果包要发布出去的话可以加个
  • require:导入的包名,已经允许安装的版本号,语义化版本
  • require-dev:开发环境下导入的包名,已经允许安装的版本号,在composer install使用–no-dev参数后不会安装require-dev中的包
  • autoload:自动文件加载配置
  • autoload-dev:开发环境下自动加载配置,和require-dev类似,使用–no-dev参数后不会自动加载autoload-dev中的文件
  • minimum-stable:按稳定性过滤包的默认值,默认为stable。这里值为dev,因为require中有依赖下面这个包,如果该字段设置为statble,那么这个包将不会被安装。其次,该字段的值有很多,项目过程中没遇到过,这里不做讨论。

file

  • prefer-stable:顾名思义,如果有stable安装包有限安装
  • extra:scripts 使用的任意扩展数据。项目过程中未使用,故不做讨论
  • repositories:定义包的仓库,比如说上面sonow/so-now-sdk包是在公司私有gitlab仓库中的,需要添加仓库源。其中type为预定义仓库类型,gitlab是其中一种。
  • scripts:通过执行composer 标签名执行脚本,比如上方执行composer analyse就会执行脚本进行phpstan代码风格审查

composer.lock 和 composer.json区别

composer.lock也放有包版本管理信息,但是composer.lock存放的是确切的版本信息,而composer.json是推荐的版本信息。

执行composer install时,首先会到composer.lock查询版本信息,如果没有composer.lock,会通过composer.json生成composer.lock。

所以需要把composer.json和composer.lock一并放到项目仓库中。

常用命令

composer init 初始化composer.json文件

composer require xxx/xxx -W 导入依赖包,使用-W的目的是,Also update dependencies of the newly required packages, including those that are root requirements.(原文,chatgpt的解释是,会顺带更新composer.json中的require和require-dev,如果不使用-W,只会更新composer.lock)

composer install 如果有composer.lock则安装composer.lock的依赖,没有就先根据composer.json生成composer.lock,再安装依赖。

composer update 忽略 composer.lock 文件,并根据项目的 composer.json 文件中的依赖关系,检查依赖包的最新版本,并尝试更新到最新版本。

composer dumpautoload -o 自动加载,-o会生成优化文件,优化文件里面装的是namespace到文件路径的映射。如果有优化文件,composer会优先从优化文件中读取,否则只能从文件系统中查找。

其他命令如下:

file

使用composer require遇到的坑和解决方法

  • 报错:Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

这个原因好像是composer require没有更新composer.json导致的,需要加-W参数更新composer.json依赖。

  • 安装php扩展

使用composer安装,一般包名是ext-{php扩展名},如下所示:

file

自动加载

composer.json中定义autoload字段

file

  • psr-4 表示命名空间符合psr-4规范的话,父命名空间App下的所有命名空间都会被自动加载,psr-4规范文档,使用phpstorm也会进行命名空间规范检查并生成修复建议。
  • “App\\”: app/ 表示命名空间为App所在的目录为当前运行目录下的app文件夹
  • files 其他自动加载的文件

在命名空间正确的情况下,如果无法自动加载文件,需要使用composer dumpautoload -o命令。个人认为是优化文件没有更新导致新文件不能自动加载导致的。

需要注意的是,在文件中需要正确导入autoload.php,否则不会自动加载文件。

  • 为什么hyperf中不用导入autoload.php文件也能做到自动加载?

在 Hyperf 项目中,文件不需要手动导入 autoload.php 文件,是因为 Hyperf 框架已经自动为项目生成了一个优化过的自动加载器,可以自动加载项目中的类和文件,无需手动导入。

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

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

相关文章

成为一个黑客要多久?

一个暑假能成为黑客吗?资深白帽黑客告诉你答案,如果你想的是能到阿里五角大楼内网四处溜达,但是不可能的,但是成为一个初级黑客还是绰绰有余,你只需要掌握好渗透测试、外攻防、数据库等基本内容,搞懂外部安…

探索云原生技术之容器编排引擎-Kubernetes/K8S详解(9)

❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…

volatile为什么无法保证原子性

假设定义 volatile int i 0; 现在2个线程同时 i,为什么数据还可能会出错?一起来看下图,虽然volatile的机制是:如果volatile修饰的变量有修改,那么会将变更内容写回主内存,同时让其他线程工作内存的该变量缓…

5、使用 pgAdmin4 图形化创建和连接 PostgreSQL 数据库

通过上几篇文章我们讲解了如何安装 PostgreSQL 数据库软件和 pgAdmin4 图形化管理工具。 接下来几篇文章我们将继续学习如何通过 pgAdmin4 管理工具图形化创建和连接 PostgreSQL 数据库。 今天这篇文章首先让我们来了解下什么数据库和数据库管理系统,对数据库和数…

nnunetv2训练报错 ValueError: mmap length is greater than file size

目录 报错解决办法 报错 笔者在使用 nnunetv2 进行 KiTS19肾脏肿瘤分割实验的训练步骤中 使用 2d 和3d_lowres 训练都没有问题 nnUNetv2_train 40 2d 0nnUNetv2_train 40 3d_lowres 0但是使用 3d_cascade_fullres 和 3d_fullres 训练 nnUNetv2_train 40 3d_cascade_fullres …

【C语言】atoi函数的模拟

atoi对于初学者来说大概率是一个陌生的函数 但不要害怕,我们可以通过各种网站去查询 例如: cplusplus就是一个很好的查询网站 目录 函数介绍模拟实现需要注意的点 函数介绍 我们发现这是一个将字符串转换为整形数字的函数 例如: int main()…

由论文写作到知识教育传承,智者善用,扶AIGC踏新程!

在学术领域中,诚信是不可动摇的基石。但是,令人震惊的事件发生了,竟有学术论文作者将ChatGPT上操作按钮的短语「Regenerate Response」毫无保留地援引到自己的论文中,更令人惊讶的是,审稿编辑竟然未能察觉这一事实&…

ESP32网络开发实例-从LittleFS加载Web页面文件

从LittleFS加载Web页面文件 文章目录 从LittleFS加载Web页面文件1、应用介绍2、软件准备3、硬件准备4、Web页面代码与LittleFS文件系统上传4.1 Web页面代码实现4.2 Web页面代码上传5、Web服务器代码实现在文中,将展示如何构建一个 Web 服务器,为存储在 ESP32 的LittleFS文件系…

大数据NoSQL数据库HBase集群部署

目录 1. 简介 2. 安装 1. HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面 2. 【node1执行】下载HBase安装包 3. 【node1执行】,修改配置文件,修改conf/hbase-env.sh文件 4. 【node1执行】&#xf…

怎么修改linux的root@后面的名称

文章目录 场景.登录服务器,root后面的名称是随机的,想自定义名称建议,直接使用命令执行需要重启机子 场景.登录服务器,root后面的名称是随机的,想自定义名称 建议,直接使用命令执行 hostnamectl set-hostname rdd-test重新连接即可生效,实际也是修改了/etc/hostname名称 需要…

高校教务系统密码加密逻辑及JS逆向——山东女子学院,蚌埠医学院,郑州工商学院,新疆大学,河南机电职业学院

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…

2023年中国水电行业研究报告

第一章 行业概况 1.1 定义 水电行业是能源领域中的重要组成部分,它通过利用水资源来产生电能。这个行业的核心是通过构建水电站,利用水的势能和动能来驱动涡轮机,进而产生电力。水电技术是一种清洁、可再生的能源产生方式,对于降…

FREAK: Fast Retina Keypoint全文翻译

英文论文和翻译链接:https://pan.baidu.com/s/1HKHH5bFopQBX3EslVsICPg 提取码:yyds FREAK: Fast Retina Keypoint FREAK:快速视网膜关键点 摘要 大量的视觉应用程序依赖于匹配图像中的关键点。过去十年的特点是朝着更快、更鲁棒的关键点和关联算法的军…

C++:模板的相关内容

文章目录 泛型编程函数模板类模板非类型模板参数模板的特化 本篇介绍一部分关于C中模板使用的问题,模板是C的一大特色,需要在实际运用中体会它的妙处 泛型编程 为了知道什么是泛型编程,先来看,如何实现对于所有类型都使用的交换…

基于统计学库statsmodel实现时间序列预测

文章目录 1.数据探索与清洗2.假设检验:平稳性检验3.差分处理4.绘制ACF与PACF图像,完成模型选择4.建立ARIMA和SARIMA模型5.解读summary6.确定最终的模型 ARIMA模型在统计学上的三大基本假设: 时间序列具有平稳性(stationary&#x…

【Bug处理】E0265 函数 “SizeClass::RoundUp“ (已声明 所在行数:62)不可访问

错误描述: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0265 函数 “SizeClass::RoundUp” (已声明 所在行数:62,所属文件:“D:\CSTUDY\项目\高并发内存池\CONCURRENT_MEMORY_POOL\Common.h”) 不可访问 Concurrent_Memory_Pool D:\CStudy\…

10分钟搞懂,Python接口自动化测试-接口依赖-实战教程

一、场景说明 在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖? 在此之前我们介绍过session管理器保存会话状态。如果接口请求需要携带token,那么又如果处理呢&#…

线性回归模型进行特征重要性分析

目的 线性回归是很常用的模型;在局部可解释性上也经常用到。 数据归一化 归一化通常是为了确保不同特征之间的数值范围差异不会对线性模型的训练产生过大的影响。在某些情况下,特征归一化可以提高模型的性能,但并不是所有情况下都需要进行归一…

点燃市场热情,让产品风靡全球——实用推广策略大揭秘!

文章目录 一、实用推广策略的重要性1. 提高产品知名度和认可度2. 拓展产品市场和用户群体3. 增强企业品牌形象和市场竞争力 二、实用推广策略的种类1. 社交媒体推广2. 定向推广3. 口碑营销4. 内容推广 三、实用推广策略的实施步骤1. 研究目标用户和市场需求,明确产品…

从开发到测试再到发布,全方位解析项目上线的完美路程!

文章目录 开发技术经理工作经验产品需求讨论项目开发计划制定控制项目风险技术小组日常管理工作进度检验与管理任务分配Code审查指导、培训普通开发工程师审核开发工程师的设计与研发质量 分布式项目架构经验1.技术架构2.网络架构3.数据库设计4.自动化部署5.监控和日志6.性能评…