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

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.mzph.cn/news/104360.shtml

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

相关文章

Java 中 Volatile 关键字

基本概念 补充一下 java 内存模型中的 可见性、原子性和有序性 可见性: 指的是线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果,另一个线程马上可以看到。比如 :用 volatile 修饰的变量&am…

Redis实现简易消息队列的三种方式

Redis实现简易消息队列的三种方式 消息队列简介 消息队列是一种用于在计算机系统中传递和处理数据的重要工具。如果你完全不了解消息队列,不用担心,我将尽力以简单明了的方式来解释它。 首先,想象一下你正在玩一个游戏,而游戏中…

Web应用防火墙的性能优化技术

Web应用防火墙(WAF)是企业网络安全的重要屏障,其性能直接影响到网络服务的质量和安全。本文详细探讨了WAF性能优化的几种技术,旨在为网络安全专业人员提供实用的参考。 规则优化 1.1 精简规则集 规则评估:定期评估规…

面试题补充

1.公司有几套环境:测试环境(测试人员使用),开发环境(开发人员使用),预生产环境(测试人员使用),生产环境(用户使用) 2.作为一名测试&a…

opencv跨平台arm交叉编译之ubuntu

目录 1. 安装交叉编译工具链2. 安装依赖3. 配置工具链3.1 新建build目录3.2 安装cmake-gui3.3 工具链配置界面进行配置3.3.1 终端输入以下命令3.3.2 点击Configure,弹出编译方式选择对话框:3.3.3 点击Next3.3.4 点击Finish3.3.5 点击Configure。3.3.6 Ge…

RISC-V 特权级架构

特权级别 级别的数值越大,特权级越高,掌控硬件的能力越强,在CPU硬件层面,M模式必须存在,其它模式可以不存在 执行环境调用 ecall ,这是一种很特殊的陷入类的指令, 相邻两特权级软件之间的接口正…

2023年9月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

9月是加密市场的活动月,斯坦福区块链周、Token2049等大型活动相继举办,后者更是创下超过1万人的历史最高纪录,成为了全球最大的Web3活动。在本次Token2049上,RWA、支付以及出入金成为了讨论度最多的活动。尽管活动如火如荼&#x…

docker入门加实战—docker数据卷

docker入门加实战—docker数据卷 容器是隔离环境,容器内程序的文件、配置等都在容器的内部,要读写容器内的文件非常不方便。 因此,容器提供程序的运行环境,但是程序运行产生的数据、程序运行依赖的配置都应该与容器进行解耦。 …

JUC第二十八讲:JUC工具类: Semaphore详解

JUC工具类: Semaphore详解 本文是JUC第二十八讲,JUC工具类: Semaphore详解。Semaphore底层是基于AbstractQueuedSynchronizer来实现的。Semaphore称为计数信号量,它允许n个任务同时访问某个资源,可以将信号量看做是在向外分发使用资源的许可证…

亳州市的自然风光与旅游资源:欣赏安徽省中部的壮丽景色

亳州市是中国安徽省的一个地级市,位于该省的中部。 亳州市辖区包括谯城区、涡阳县、蒙城县和利辛县等地。亳州市拥有悠久的历史和丰富的文化遗产,同时也以其独特的自然风光而闻名。 首先,让我们来了解一下亳州的历史和景点。亳州的历史可以…

软件‘小程序‘前台开发软件定制的知识|app网站搭建

软件,小程序,前台开发软件定制的知识 随着互联网的快速发展,软件,小程序,前台开发软件定制已经成为了企业必备的工具。它可以帮助企业更好地管理业务,提高效率,增强用户体验。那么,什…

MySQL中使用函数会使索引失效?

文章目录 1、前置准备2、ChatGPT的答案3、实践证明SQL1SQL2SQL3SQL4SQL5 4、总结 1、前置准备 首先创建我们要测试的库表 CREATE TABLE lianhe_index (id int(11) NOT NULL AUTO_INCREMENT COMMENT id,name varchar(255) DEFAULT NULL,age int(11) DEFAULT NULL,number int(1…

Flink报错could not be loaded due to a linkage failure

文章目录 1、报错2、原因3、解决 1、报错 在Flink上提交作业,点Submit没反应,F12看到接口报错信息为: 大概意思是,由于链接失败,无法加载程序的入口点类xx。没啥鸟用的信息,去日志目录继续分析&#xff1a…

什么是指标体系,怎么搭建一套完整的指标体系?(附PDF素材)

什么是指标体系,怎么搭建一套完整的指标体系?数字化转型过程中,这个问题一直困扰着数据分析师。主要体现在: 各部门根据业务需求,都有一部分量化指标,但不够全面,对企业整体数据分析应用能力提…

ajax同步与异步,json-serve的安装与使用,node.js的下载

20.ajax json 轻量级的数据格式做配置文件网络传输 xml 重量级的数据格式 可扩展标记语言做配置文件网络传输 现在目前主流就是大量采用json做网络传输数据格式 1.ajax的概念: 与服务器进行’通信’的一种技术,能够实现异步的刷新页面 **同步:**按照顺序一步步的执行,容易造…

VMware和Debian下载

文章目录 ⭐️写在前面的话⭐️一、VMware二、Debain三、建立虚拟机🚀 先看后赞,养成习惯!🚀🚀 先看后赞,养成习惯!🚀 ⭐️写在前面的话⭐️ CSDN主页:程序员好冰 目前在…

多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测

多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测 目录 多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果…

使用PyTorch处理多维特征输入的完美指南

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

Element Plus阻止 el-dropdown、el-switch等冒泡事件

最近做vue3项目&#xff0c;使用Element Plus,又遇到坑了&#xff01; 问题点&#xff1a;组件中遇到事件冒泡问题了&#xff0c;el-checkbox 中 change事件要求阻止冒泡&#xff0c;如下代码中要求点击checkbox时不调用li标签的show方法 <li click"show()">…

STM32物联网基于ZigBee智能家居控制系统

实践制作DIY- GC0169-ZigBee智能家居 一、功能说明&#xff1a; 基于STM32单片机设计-ZigBee智能家居 二、功能介绍&#xff1a; 1个主机显示板&#xff1a;STM32F103C最小系统ZigBee无线模块OLED显示器 语音识别模块多个按键ESP8266-WIFI模块&#xff08;仅WIFI版本有&…