当前位置: 首页 > news >正文

PHP7和PHP8的新特性

PHP 7 新特性:

  1. 改进的性能:最显著的变化就是性能提升,据官方报告,PHP 7 的速度是 PHP 5.6 的两倍。

  2. 标量类型声明:PHP 7 添加了 int, float, string 和 bool 四种标量类型声明,这使得函数可以通过预定义参数类型达到更好的错误处理。

    function setAge(int $age) {//...
    }
  3. 返回类型声明:PHP 7 允许函数通过返回类型声明来指定返回值的类型。

    function getTotal(): float {return 100.0;
    }
  4. Null 合并运算符(??):新加入的 null 合并运算符允许开发者使用 ?? 来检查数据是否存在,不存在则返回默认值。
     

    $username = $_POST['username'] ?? 'guest';
  5. Null 合并运算符(??):新加入的 null 合并运算符允许开发者使用 ?? 来检查数据是否存在,不存在则返回默认值。

    echo 1 <=> 1; // 0
    echo 1 <=> 2; // -1
    echo 2 <=> 1; // 1

PHP 8 新特性:

  1. JIT(Just In Time) 编译:PHP 8 引入了 JIT 编译,这是一个实质上的性能改进,尤其对于CPU密集型应用。

  2. 命名参数: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函数时清楚地看到每个参数的含义,而且参数的顺序也可以随意调整,不会影响结果。这对于有很多参数,尤其是大部分都是可选参数的函数来说,是一个非常有用的特性。

  3. 构造函数属性提升:这是一个语法糖,允许你通过公有、保护或私有修饰符一次性声明和初始化类的属性。
     

    $result = match($input) {'one' => 1,'two' => 2,default => 0,
    };

  4. Nullsafe 运算符(?->):如果尝试在 null 对象上调用方法,它将返回 null 而不是抛出错误。

    $date = $session?->user?->getBirthDate()?->format('Y-m-d');

以上只是PHP 7和PHP 8部分新特性的概述,每个主要版本的发布都会带来很多改进和新特性。

相关文章:

PHP7和PHP8的新特性

PHP 7 新特性&#xff1a; 改进的性能&#xff1a;最显著的变化就是性能提升&#xff0c;据官方报告&#xff0c;PHP 7 的速度是 PHP 5.6 的两倍。 标量类型声明&#xff1a;PHP 7 添加了 int, float, string 和 bool 四种标量类型声明&#xff0c;这使得函数可以通过预定义参…...

mysql按照日期分组统计数据(date_formatstr_to_date)

学习链接 mysql按照日期分组统计数据 博主-山茶花开时的 【Mysql专栏学习】 mysql按照日期分组统计数据 Mysql的date_format函数想必大家都使用过吧&#xff0c;一般用于日期时间转化&#xff0c;如下所示 # 可以得出 2023-01-01 08:30:50 select DATE_FORMAT(2023-01-01…...

【C++程序员必修第一课】C++基础课程-07:switch 分支选择

1 本课主要内容&#xff1a; 为什么需要有 switch 多分支选择&#xff1f;应用场景在哪里&#xff1f;switch 多分支选择的应用讲解&#xff1a;case, break,default 2 主要知识点&#xff1a; 为什么需要有 switch 多分支选择 思考一个问题&#xff0c;数学老师需要统计班上同…...

initramfs介绍

initramfs介绍 什么是initramfs&#xff1f; initramfs&#xff08;Initial RAM Filesystem&#xff09;是一种临时文件系统&#xff0c;它在Linux系统启动过程中被加载到内存中。它包含了必要的驱动程序、工具和配置文件&#xff0c;用于在内核启动后挂载真实的根文件系统之…...

数据结构与算法:二分查找(心得)

前言 前些天我做了一道题目&#xff0c;题目中要求使用二分查找&#xff0c;我便按照我心中的二分查找&#xff0c;信心满满的提交上去了。结果发现无限循环&#xff0c;后面我便去查阅了资料 二分查找的条件 用于查找的内容需要是有序的查找的数量只能是一个 二分查找的二种方…...

项目管理之分析项目特点的方法

在管理项目时&#xff0c;了解项目的目标和实现方法可以帮助我们更好地规划和执行项目。根据项目的目标和实现方法的不同&#xff0c;可以将项目分为四种类型&#xff1a;地、水、火和气。 对于工程项目&#xff0c;采用基于活动任务的计划管理方法&#xff0c;使用活动网络图…...

MyBatisPlus(二十一)乐观锁

使用场景 用于当有多个用户同时修改同一条数据的时候&#xff0c;只允许有一个修改成功。 实现原理 使用一个字段&#xff0c;用于记录数据的版本。 当修改数据时&#xff0c;会去检测当前版本是否是正在修改的版本&#xff0c;同时修改成功后会把 版本号 1。 实现方式 配…...

node 通过axios发送post请求(FormData)

方案一&#xff1a; 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.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位 置由最后一个元素填补&#xff0c;若顺序表为空&#xff0c;则显示出错信息并退出运行。 算法思想&#xff1a;搜索整个顺序表&#xf…...

【疯狂Java讲义】Java学习记录(使用jar命令打包)

jar命令 把多个文件打包成一个压缩包——这个压缩包和WinZip的压缩格式是一样的。 区别在于jar压缩的文件默认多一个META-INF的文件夹&#xff0c;该文件夹里包含一个MANIFEST.MF的文件&#xff08;清单&#xff09;。 通常来说&#xff0c;得到的压缩包有3种&#xff08;压缩格…...

数据库第一、二章作业

只为记录与分享 第1,2章作业.xls 题量: 34 满分: 100 一. 单选题&#xff08;共34题&#xff09; 1. (单选题)在数据库中&#xff0c;下列说法&#xff08; &#xff09;是不正确的。 A. 数据库避免了一切数据的重复B. 若系统是完全可以控制的&#xff0c;则系统可确保更新…...

将数组拆分成斐波那契序列

题目描述 示例 代码如下&#xff1a; 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】:权限

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

8年软件测试工程师感悟——写给还在迷茫中的朋友

这两天和朋友谈到软件测试的发展&#xff0c;其实软件测试已经在不知不觉中发生了非常大的改变&#xff0c;前几年的软件测试行业还是一个风口&#xff0c;随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业&#xff0c;目前软件测试行业“缺口”已经基本饱和。当然&a…...

CleanMyMac苹果电脑清理软件是智商税吗?最全评测价格、清理效果一次说清

这是一篇CleanMyMac最全评测&#xff01;价格、清理效果一次说清&#xff0c;告诉你它真不是智商税! 升级Ventura系统之前&#xff0c;我用的是CleanMyMac X绿色版&#xff08;绝不提倡这个行为&#xff09;。更新到Ventura之后&#xff0c;之前很多绿色软件失效&#xff0c;浪…...

【pytorch 中 torch.max 和 torch.argmax 的区别】

torch.max 和 torch.argmax 的区别 1.torch.max torch.max(input, dim, maxNone, max_indicesNone, keepdimFalse) -->> (Tensor, LongTensor) 作用&#xff1a;找出给定tensor的指定维度dim上的上的最大值&#xff0c;并返回最大值在该维度上的值和位置索引。 应用举…...

无效的 page.json [“window“] 页面.json配置了“window“: {“disableScroll“: true}

问题&#xff1a;启动小程序时报错 无效的 page.json ["window"] 页面 解决&#xff1a; app.json 全局配置才使用window对象&#xff0c;在单独的页面直接写disableScroll:true即可 //app.json中添加&#xff0c;window里面添加就可以了 "window": { …...

2023最新短视频配音软件~

随着互联网的迅猛发展&#xff0c;网络平台上的影视剧配音逐渐成为一种热门赚钱方式。那么&#xff0c;想要参与影视剧配音赚钱&#xff0c;就需要拥有一款好用的配音软件。下面我就为大家介绍一款最新的影视剧配音神器&#xff01; 悦音配音 这是一款大家都在用的配音工具&am…...

【内网击穿工具 】NATAPP

内网穿透又叫内网映射&#xff0c;功能是把内网IP映射到公网&#xff0c;使公网也能轻松访问所搭建的服务。 内网与外网 外网指的是一个组织或网络中可公开访问的网络&#xff0c;即对外开放的网络。外网可以通过公共互联网进行访问 内网是相对于外网而言的&#xff0c;指的…...

vue 使用crypto.js解密后,用JSON.parse转义报错非空白格解决办法

问题&#xff1a; 用JSON.parse转义crypto解密后的json字符串会发生错误。如图&#xff1a; 原因&#xff1a; 那是因为crypto自己加了一些未可见的字符&#xff0c;所以用正常的JSON.parse(xxxx)会报错。 解决办法&#xff1a; JSON.parse(xxxx.replace(/[\u0000-\u001F\u…...

全景分割的自监督学习

在本章中,我们将第3章中讨论的SSL方法扩展到语义和全景分割任务。使用手动生成的标签训练的卷积神经网络通常用于语义或实例分割。 在精准农业中,自动化花朵检测方法使用监督模型和后处理技术,随着花朵的外观和数据采集条件的变化,这些技术可能无法始终如一地执行。我们提…...

基于python的23种设计模式

以下是基于Python实现的23种设计模式及代码段和详细解释&#xff1a; 1. 工厂模式&#xff08;Factory Pattern&#xff09; 简介 工厂模式是一种创建型设计模式&#xff0c;它允许客户端代码通过工厂方法创建对象&#xff0c;而无需直接实例化对象。在工厂方法模式中&#…...

屏幕录制视频编辑软件 Camtasia 2023 mac中文版软件功能

Camtasia 2023 mac是一款功能强大的屏幕录制和视频编辑软件&#xff0c;可以用于制作教育课程、演示文稿、培训视频等。它具有一系列工具和功能&#xff0c;包括屏幕录制、视频编辑、音频编辑、字幕、特效等&#xff0c;使用户可以轻松地创建高质量的视频内容。 Camtasia2023的…...

关于spring的xml文件中的xmlns,xsi,schemaLocation

关于spring xml文件中的xmlns,xsi:schemaLocation 首先我们看到的一个spring的配置文件大概如下面这个样子&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" //这表…...

mac-“准备安装时发生错误,请尝试重新运行此应用程序” + mac未能安装所需的固件更新

参考链接&#xff1a;参考 u盘安装时候遇到问题&#xff1a; 安装系统时候报错 解决方案&#xff1a; 根据u盘系统上进行格式化磁盘&#xff0c;&#xff08;我选择的是APFS&#xff09;&#xff0c;命名Macintosh HD 抹完之后选择急救下。 然后退出磁盘工具&#xff0c;点击…...

二叉搜索树的详解及Map和Set的介绍

目录 1.二叉搜索树 1.1二叉搜索树的介绍 1.2.二叉搜索树的实现 1.2.1二叉搜索树的创建 1.2.2查找关键字 1.2.3插入 1.2.4删除 1.3二叉搜索树的性能分析 2.Map Map官方文档 2.1Map 的常用方法说明 2.2关于Map.Entry的说明,> 2.3注意事项 2.4reeMap和HashMap的区别 …...

【Android知识笔记】JNI专题

一、JNI 基础知识 JNI 的数据类型以及和Java层之间的数据转换 前面总结了一篇,这里不再展开,可以参考: JNI 的数据类型以及和Java层之间的数据转换 注:这些知识都收集自网络文章,比较零散,对于JNI基础来说应该够用了。主要是一些API的使用,记不住时当成手册来查询一下…...

C++面试题目汇总【持续更新】

面试题目汇总 C基础1. 面向对象是什么&#xff1f;[GPT]2. 面向对象的三大特征是什么&#xff1f;[GPT]3. 重载&#xff0c;重写&#xff0c;隐藏的区别&#xff1f;[GPT]4. 构造函数的类别有哪些&#xff1f;[GPT]5. 定义一个空类时&#xff0c;默认生成哪些函数&#xff1f;[…...

【PXIE301-211】青翼科技基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台

板卡概述 PXIE301-211是一款基于PXIE总线架构的16路并行LVDS数据采集、1路光纤收发处理平台&#xff0c;该板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器&#xff0c;实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡具有1个FMC&#xf…...

WPF实现签名拍照功能

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...