【学习笔记】项目进行过程中遇到有关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.rhkb.cn/news/158064.html

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

相关文章

《C++ Primer》练习9.52:使用栈实现四则运算

栈可以用来使用四则运算,是一个稍微有点复杂的题目,去学习了一下用栈实现四则运算的原理,用C实现了一下。首先要把常见的中缀表达式改成后缀表达式,然后通过后缀表达式计算,具体的原理可以参考这位博主的文章&#xff…

抖音直播招聘小程序可以增加职位展示,提升转化率,增加曝光度

抖音直播招聘报白是指进入抖音的白名单,允许在直播间或小视频中发布招聘或找工作等关键词。否则会断播、不推流、限流。抖音已成为短视频流量最大的平台,但招聘企业数量较少。抖音招聘的优势在于职位以视频、直播方式展示,留存联系方式更加精…

到底什么是5G-R?

近日,工信部向中国国家铁路集团有限公司(以下简称“国铁集团”)批复5G-R试验频率的消息,引起了行业内的广泛关注。 究竟什么是5G-R?为什么工信部会在此时批复5G-R的试验频率? 今天,小枣君就通过…

公司文件防泄密软件——「天锐绿盾」@德人合科技

天锐绿盾是一款企业级数据安全解决方案,主要用于保护企业的知识产权、客户资料、财务数据、技术图纸、应用系统等机密信息化数据不外泄。 PC访问地址: 🔗isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 该软件解决方案…

vue单页面应用使用 history模式路由时刷新页面404的一种可能性

原先使用的是 hash模式路由,因为要结合qiankun进行微前端改造,改成了 history模式,结果页面刷新之后没有正确渲染组件。按照一般思路检查 nginx配置 try_files $uri $uri/ /index.html;也配置上了,还是有问题。 页面异常显示 问题…

电脑重做系统---win10

电脑重做系统---win10 前言制作启动U盘材料方法打开网址下载启动盘制作工具参照官方说明进行制作使用U盘重做系统 常用软件官网地址 前言 记得最早学习装电脑还是04年左右,最为一个啥也不知道的大一傻白胖,花了几百大洋在电脑版把了个“电脑组装与维修”…

使用 KubeSkoop exporter 监测和定位容器网络抖动问题

作者:遐宇、溪恒 本文是 8 月 17 日直播的文字稿整理,文末可观看直播回放。除去文章内容外,还包括针对实际网络问题的实战环节。 容器网络抖动问题发生频率低,时间短,是网络问题中最难定位和解决的问题之一。 不仅如…

CVE-2017-15715 apache换行解析文件上传漏洞

影响范围 httpd 2.4.0~2.4.29 复现环境 vulhub/httpd/CVE-2017-15715 docker-compose 漏洞原理 在apache2的配置文件: /etc/apache2/conf-available/docker-php.conf 中,php的文件匹配以正则形式表达 ".php$"的正则匹配模式意味着以.ph…

见微知著:从企业售后技术支持看云计算发展

作者:余凯 售后业务中的细微变化 作为阿里云企业容器技术支持的一员,每天会面对全球各地企业级客户提出的关于容器的各种问题,通过这几年的技术支持的经历,逐步发现容器问题客户的一些惯性,哪些是重度用户&#xff0…

将Excel表中数据导入MySQL数据库

1、准备好Excel表: 2、数据库建表case2 字段信息与表格对应建表: 3、实现代码 import pymysql import pandas as pd import openpyxl 从excel表里读取数据后,再存入到mysql数据库。 需要安装openpyxl pip install openpyxl# 读入数据&#x…

【面试高频题】难度 1/5,经典树的搜索(多语言)

题目描述 这是 LeetCode 上的 「109. 有序链表转换二叉搜索树」 ,难度为 「中等」 Tag : 「二叉树」、「树的搜索」、「分治」、「中序遍历」 给定一个单链表的头节点 head,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中&…

基于SSM的校园音乐平台系统

基于SSM的校园音乐平台系统~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 歌手管理 歌曲管理 摘要 校园音乐平台系统(Campus Mu…

基于知识图谱建模、全文检索的智能知识管理库(源码)

一、项目介绍 一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,一款让企业知识变为实打实的数字财富的系统,应用在需要进行文档整理、分类、归集、检索、分析的场景。 知识图谱提供了一种从海量文本和图像中抽取结…

【C++】:初阶模板

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

【算法-动态规划】最长公共子串

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

磁盘非跨盘访问算法实现

1. 背景说明 本算法基于已将磁盘分布合并并排序为升序线性表。实现示例为:磁盘扇区大小:32(可自定义),待拆分磁盘内存: [0 - 50],[60 - 100](可增加)。示意图如下&#x…

RISC-V 特权级架构

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

用于物体识别和跟踪的下游任务自监督学习-2-(计算机视觉中的距离度量+损失函数)

2.4 计算机视觉中的距离度量 在深度学习和计算机视觉中,距离度量通常用于比较图像、视频或其他数据的特征或嵌入。根据具体任务和数据属性,可以使用不同类型的距离度量。下面介绍了深度学习和计算机视觉中使用的一些常见类型的距离度量。 余弦相似性距…

后端使用aop和redis实现防抖

在公司的代码开发中遇到了,快速点击就会重复提交的bug,刚好最近在优化代码于是想着在后端实现防抖 1.整体思路 2.创建防抖的注解 防抖我一般放在存储方法上,在程序运行时使用,于是我的防抖注解是method类型 Target(ElementType.METHOD) Ret…