PHP7和PHP8的新特性
PHP 7 新特性:
-
改进的性能:最显著的变化就是性能提升,据官方报告,PHP 7 的速度是 PHP 5.6 的两倍。
-
标量类型声明:PHP 7 添加了 int, float, string 和 bool 四种标量类型声明,这使得函数可以通过预定义参数类型达到更好的错误处理。
function setAge(int $age) {//... } -
返回类型声明:PHP 7 允许函数通过返回类型声明来指定返回值的类型。
function getTotal(): float {return 100.0; } -
Null 合并运算符(??):新加入的 null 合并运算符允许开发者使用
??来检查数据是否存在,不存在则返回默认值。
$username = $_POST['username'] ?? 'guest'; -
Null 合并运算符(??):新加入的 null 合并运算符允许开发者使用
??来检查数据是否存在,不存在则返回默认值。echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1
PHP 8 新特性:
-
JIT(Just In Time) 编译:PHP 8 引入了 JIT 编译,这是一个实质上的性能改进,尤其对于CPU密集型应用。
-
命名参数:PHP 8 允许使用命名参数在调用函数时直接指定参数的名称,提高了代码的可读性。
php // 在没有命名参数之前 function foo($a, $b, $c) { /* ... */ } foo('a的值', 'b的值', 'c的值');// 使用命名参数后 function foo($a, $b, $c) { /* ... */ } foo(b: 'b的值', a: 'a的值', c: 'c的值');如你所见,通过使用命名参数,我们可以在调用
foo函数时清楚地看到每个参数的含义,而且参数的顺序也可以随意调整,不会影响结果。这对于有很多参数,尤其是大部分都是可选参数的函数来说,是一个非常有用的特性。 -
构造函数属性提升:这是一个语法糖,允许你通过公有、保护或私有修饰符一次性声明和初始化类的属性。
$result = match($input) {'one' => 1,'two' => 2,default => 0, }; -
Nullsafe 运算符(?->):如果尝试在 null 对象上调用方法,它将返回 null 而不是抛出错误。
$date = $session?->user?->getBirthDate()?->format('Y-m-d');
以上只是PHP 7和PHP 8部分新特性的概述,每个主要版本的发布都会带来很多改进和新特性。
相关文章:
PHP7和PHP8的新特性
PHP 7 新特性: 改进的性能:最显著的变化就是性能提升,据官方报告,PHP 7 的速度是 PHP 5.6 的两倍。 标量类型声明:PHP 7 添加了 int, float, string 和 bool 四种标量类型声明,这使得函数可以通过预定义参…...
mysql按照日期分组统计数据(date_formatstr_to_date)
学习链接 mysql按照日期分组统计数据 博主-山茶花开时的 【Mysql专栏学习】 mysql按照日期分组统计数据 Mysql的date_format函数想必大家都使用过吧,一般用于日期时间转化,如下所示 # 可以得出 2023-01-01 08:30:50 select DATE_FORMAT(2023-01-01…...
【C++程序员必修第一课】C++基础课程-07:switch 分支选择
1 本课主要内容: 为什么需要有 switch 多分支选择?应用场景在哪里?switch 多分支选择的应用讲解:case, break,default 2 主要知识点: 为什么需要有 switch 多分支选择 思考一个问题,数学老师需要统计班上同…...
initramfs介绍
initramfs介绍 什么是initramfs? initramfs(Initial RAM Filesystem)是一种临时文件系统,它在Linux系统启动过程中被加载到内存中。它包含了必要的驱动程序、工具和配置文件,用于在内核启动后挂载真实的根文件系统之…...
数据结构与算法:二分查找(心得)
前言 前些天我做了一道题目,题目中要求使用二分查找,我便按照我心中的二分查找,信心满满的提交上去了。结果发现无限循环,后面我便去查阅了资料 二分查找的条件 用于查找的内容需要是有序的查找的数量只能是一个 二分查找的二种方…...
项目管理之分析项目特点的方法
在管理项目时,了解项目的目标和实现方法可以帮助我们更好地规划和执行项目。根据项目的目标和实现方法的不同,可以将项目分为四种类型:地、水、火和气。 对于工程项目,采用基于活动任务的计划管理方法,使用活动网络图…...
MyBatisPlus(二十一)乐观锁
使用场景 用于当有多个用户同时修改同一条数据的时候,只允许有一个修改成功。 实现原理 使用一个字段,用于记录数据的版本。 当修改数据时,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 1。 实现方式 配…...
node 通过axios发送post请求(FormData)
方案一: const axios require(axios) const FormData require(form-data) const fs require(fs)const sdUpscaleOnAzure async (req, res) > {const data new FormData()data.append(image, fs.readFileSync(/temp/ai/sd/download/1.png))let config {hea…...
2024 王道考研-数据结构
第二章 线性表算法题(线性表的顺序表示) 二、综合应用题 01.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 算法思想:搜索整个顺序表…...
【疯狂Java讲义】Java学习记录(使用jar命令打包)
jar命令 把多个文件打包成一个压缩包——这个压缩包和WinZip的压缩格式是一样的。 区别在于jar压缩的文件默认多一个META-INF的文件夹,该文件夹里包含一个MANIFEST.MF的文件(清单)。 通常来说,得到的压缩包有3种(压缩格…...
数据库第一、二章作业
只为记录与分享 第1,2章作业.xls 题量: 34 满分: 100 一. 单选题(共34题) 1. (单选题)在数据库中,下列说法( )是不正确的。 A. 数据库避免了一切数据的重复B. 若系统是完全可以控制的,则系统可确保更新…...
将数组拆分成斐波那契序列
题目描述 示例 代码如下: public class SplitIntoFibonacci {LinkedList<Integer> res new LinkedList<>();public List<Integer> splitIntoFibonacci(String num) {if(num.length() < 3) return res;if(dfs(num, 0)) return res;return new…...
【Linux】:权限
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…...
8年软件测试工程师感悟——写给还在迷茫中的朋友
这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然&a…...
CleanMyMac苹果电脑清理软件是智商税吗?最全评测价格、清理效果一次说清
这是一篇CleanMyMac最全评测!价格、清理效果一次说清,告诉你它真不是智商税! 升级Ventura系统之前,我用的是CleanMyMac X绿色版(绝不提倡这个行为)。更新到Ventura之后,之前很多绿色软件失效,浪…...
【pytorch 中 torch.max 和 torch.argmax 的区别】
torch.max 和 torch.argmax 的区别 1.torch.max torch.max(input, dim, maxNone, max_indicesNone, keepdimFalse) -->> (Tensor, LongTensor) 作用:找出给定tensor的指定维度dim上的上的最大值,并返回最大值在该维度上的值和位置索引。 应用举…...
无效的 page.json [“window“] 页面.json配置了“window“: {“disableScroll“: true}
问题:启动小程序时报错 无效的 page.json ["window"] 页面 解决: app.json 全局配置才使用window对象,在单独的页面直接写disableScroll:true即可 //app.json中添加,window里面添加就可以了 "window": { …...
2023最新短视频配音软件~
随着互联网的迅猛发展,网络平台上的影视剧配音逐渐成为一种热门赚钱方式。那么,想要参与影视剧配音赚钱,就需要拥有一款好用的配音软件。下面我就为大家介绍一款最新的影视剧配音神器! 悦音配音 这是一款大家都在用的配音工具&am…...
【内网击穿工具 】NATAPP
内网穿透又叫内网映射,功能是把内网IP映射到公网,使公网也能轻松访问所搭建的服务。 内网与外网 外网指的是一个组织或网络中可公开访问的网络,即对外开放的网络。外网可以通过公共互联网进行访问 内网是相对于外网而言的,指的…...
vue 使用crypto.js解密后,用JSON.parse转义报错非空白格解决办法
问题: 用JSON.parse转义crypto解密后的json字符串会发生错误。如图: 原因: 那是因为crypto自己加了一些未可见的字符,所以用正常的JSON.parse(xxxx)会报错。 解决办法: JSON.parse(xxxx.replace(/[\u0000-\u001F\u…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
