PHP 7.4 新特性

article/2025/9/15 5:56:18

640?wx_fmt=gif

PHP 7.4 计划在2019年11月21日发布,它主要新增了以下几个特性:

短闭包函数

短闭包函数可以减少冗余代码:

array_map(function (User $user) { 
return $user->id;
}, $users)
array_map(fn(User $user) => $user->id, $users)

需要注意几点:

use
$this

预加载

PHP 预加载可以极大的提高性能

优点:在 PHP 7.4 以前,如果你使用了框架来开发,每次请求文件就必须加载和重新编译。预加载在框架启动时在内存中加载文件,而且在后续请求中永久有效。

缺点:性能的提升会在其他方面花费很大的代价,每次预加载的文件发生改变时,框架需要重新启动。

属性类型限定

class A
{
public string $name;

public Foo $foo;
}

不得不说, PHP 越来越接近 Java 等强类型语言

Improved type variance

协变返回类型:

class ParentType {}
class ChildType extends ParentType {}

class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}

class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}

依赖(是不是很熟悉):

class ParentType {}
class ChildType extends ParentType {}

class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}

class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}

简写三元运算符

在目前 > PHP 7 以后的写法:

$data['date'] = $data['date'] ?? new DateTime();

PHP 7.4 你可以这样写:

$data['date'] ??= new DateTime();

数组展开运算

合并数组到另一个数组中,返回一维数组

$arrayA = [1, 2, 3];

$arrayB = [4, 5];

$result = [0, ...$arrayA, ...$arrayB, 6 ,7];

// [0, 1, 2, 3, 4, 5, 6, 7]

注意:只对数字索引有效

新增类的魔术方法

RFC 添加了两个新的魔术方法 __serialize 和 __unserialize

数字分隔符

允许使用下划线更直观的分隔数值

$unformattedNumber = 107925284.88;

$formattedNumber = 107_925_284.88;

运算优先顺序

PHP 7.4 之前,如果你这样写:

echo "sum: " . $a + $b;

PHP 会解析为:

echo ("sum: " . $a) + $b;

PHP 8 将会解析为:

echo "sum :" . ($a + $b);

__toString 中抛出异常

支持反射引用

PHP 7.4 将会新增 ReflectionReference 类

移除 php 短标签

<? 将会在 PHP 8 中移除, <?= 会继续保留

弃用左关联运算符

PHP 遗留了一些奇怪的怪癖,比如

1 ? 2 : 3 ? 4 : 5;   // 将会在 PHP 7.4 中废弃,在 PHP 8中会抛出编译错误

(1 ? 2 : 3) ? 4 : 5; // 正确

不再向后兼容的变更

  1. 弃用在没有父类的情况下调用 parent::

  2. 调用 var_dump 打印 DateTime 和 DateTimeImmutable shi'实例,将不再保留对象上的可访问属性

  3. openssl_random_pseudo_bytes 会在调用错误时抛出异常

  4. 序列化 PDO 和 PDOStatement 实例将会生成一个 Exception 而不是 PDOException 异常

  5. 调用 get_object_vars() 打印 ArrayObject 实例将会返回 ArrayObject 自己的属性,而不是被包裹的数组或对象的值,

数组强制转换不受影响


原文:https://segmentfault.com/a/1190000019554530

640?wx_fmt=jpeg


http://chatgpt.dhexx.cn/article/29h9gXLZ.shtml

相关文章

PHP7.0至PHP8部分特性总结

PHP7.0特性 2015年6月11日&#xff0c;PHP开发团队宣布将立即提供PHP 7.0.0 Alpha1。此版本标志着PHP 7主要系列的开始。我们有许多原因&#xff0c;应该对PHP7.0感到兴奋&#xff0c;接下来让我们来看一下它全新的语言特性! 性能&#xff1a; PHP7.0采用下一代由PHP核心团队开…

php8新特性全览【超详细】

题外话&#xff1a; PHP 8.0 是 PHP 语言的重大更新。 它包含许多新功能和优化&#xff0c;包括命名参数、联合类型、属性、构造函数属性提升、匹配表达式、空安全运算符、JIT&#xff0c;以及类型系统、错误处理和一致性方面的改进。 废话不多说&#xff0c;开车 1.便利的命名…

php 7新特性(一):类型的限定

1、标量类型声明&#xff1a; a.默认&#xff1a;以前的弱类型 b.严格&#xff1a;declare(strict_types1) //strict_types的值&#xff08;1或者0&#xff09;&#xff0c;1表示严格类型, 0表示弱类型 可以使用的类型参数有&#xff1a;int float bool string inte…

PHP8所有新特性

PHP 8 正式版即将发布&#xff0c;是时候来看看 PHP 8 即将推出的新特性了 首先来安装PHP8 下载地址 https://www.php.net/downloads 本地编译安装 PHP 8 RC2 版本(MAC操作系统) # 0、下载解压源码 wget https://downloads.php.net/~pollita/php-8.0.0RC2.tar.gz tar zxvf p…

PHP8新特性解读

本文主要内容为解读PHP8.0的主要新特性 解读PHP8特性 前言一、给小皮面板下载PHP8二、部分下载PHP8会出现502解决方案三、介绍特性1. 联合类型2. 匹配表达式3. null安全运算符4. 构造函数属性提升5. 注解6. 命名参数 四、总结 前言 PHP8在2020年11月26日正式发布&#xff0c;又…

PHP 7 新特性

转载自&#xff1a; https://zhuanlan.zhihu.com/p/27694633 https://zhuanlan.zhihu.com/p/27847880 https://zhuanlan.zhihu.com/p/29478077 https://goghcrow.gitbooks.io/php7/content/xin-te-xing.html PHP 7 之前的类型提示 PHP 5.0 首次提出函数参数&#xff08…

php7 新特性整理

PHP7 已经出来1年了&#xff0c;PHP7.1也即将和大家见面&#xff0c;这么多好的特性&#xff0c;好的方法&#xff0c;为什么不使用呢&#xff0c;也希望PHP越来越好。 在这里整理 PHP 5.1 &#xff0c;PHP5.2,PHP5.3,PHP5.4,PHP5.5,PHP5.6 ,PHP7,PHP7.1 所有新特性&#xff0…

PHP 7 新特性 - 收集

前言 最好的语言发布了新的版本&#xff0c;一个划时代的大版本&#xff1a;PHP7。 PHP7修复了大量BUG&#xff0c;新增了功能和语法糖。这些改动涉及到了核心包、GD库、PDO、ZIP、ZLIB等熟悉和不熟悉的核心功能与扩展包。 PHP7移除了已经被废弃的函数&#xff0c;如mysql_系…

PHP7新特性总结

前言 本文是一篇讲座听后&#xff0b;后续研究的总结。 话说当年追时髦&#xff0c;php7一出就给电脑立马装上了&#xff0c;php5和php7共存&#xff0c;也是立马写了个超级耗时间的循环脚本测了一番&#xff0c;确实php7给力很多&#xff0c;然后也是注意了一些新增的特性与一…

搭建图片加密平台,扫码支付后简单获取密码

搭建图片加密平台&#xff0c;扫码支付后简单获取密码 很多人问我&#xff0c;互联网上到底做什么项目是可以赚到钱的&#xff1f;没有基础&#xff0c;不懂技术&#xff0c;不会推广&#xff0c;所以有没有简单一点的&#xff0c;一操作就能上手就能赚钱的&#xff1f;我可以…

java中Base64图片加密解密保存

工具类中的图片解密的代码 /*** base64字符串转图片* param imgStr 图片的base64* param path 将要生成的地址* return*/ public static String generateImage(String imgStr, String path) {//如果图像数据为空 if (imgStr null) {return null;}BASE64Decoder decoder new…

PC微信机器人之实战分析微信图片加密解密

今天主要讨论下微信图片的加密和解密&#xff0c;我们都知道微信接收的图片是加密形式的需要解密&#xff0c;但是这个加密大家都知道是异或。但是怎么异或&#xff0c;跟谁异或呢&#xff1f;这次就是围绕这个来讲的&#xff0c;我们手动计算异或的值&#xff0c;才能彻底明白…

混沌加密算法python_基于混沌Logistic加密算法的图片加密与还原

摘要 一种基于混沌Logistic加密算法的图片加密与还原的方法,并利用Lena图和Baboon图来验证这种加密算法的加密效果。为了能够体现该算法在图片信息加密的效果,本文还采用了普通行列置乱加密算法和像素点的RGB的值的缩放算法这两种算法对相同的图片的图片进行处理,利用matlab…

关于身份证图片加密安全技术

前言 现在的图片都是上传到c d n或者其它第三方服务器上&#xff0c;通过一个url进行访问&#xff0c;非常的方便&#xff0c;方便的同时也带来了另外一个问题&#xff0c;隐私安全问题&#xff0c;比如&#xff1a;好莱坞隐私照片泄漏。 如何保证图片安全 如果发生客户隐私…

blob图片路径加密

目录 一、代码二、效果演示 一、代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>blob图片路径加…

Cocos图片加密与解密

如果cocos项目没有对资源进行加密处理,发布出来的APK一旦被人解包&#xff0c;则所有图片资源都会暴露出来,为了避免图片资源被人恶意使用&#xff0c;所以我准备给自己项目中使用到的图片进行简单加密&#xff0c;这样可以防住一部分解包伸手党。 我们这里采用最常见的异或加…

(在线)实时图片加密

目录 1 功能介绍 2 操作说明 2.1 图片加密 2.1 图片解密 1 功能介绍 图片加密http://eastsun.xyz/sudoku/html/encryptPic.html 该网站主要用于对图片进行在线实时加密,解密 用户可以自定义加密后生成的"文字图片"内容,同时这些文字图片也可以是图片解密的提示信…

python简单的图片加密

欢迎加入我们卧虎藏龙的python讨论qq群&#xff1a;729683466 ●导 语 ● 总有些东西是你不希望别人看到的 比如 你暗恋的女神的照片 要是被别人发现了 那可就尴尬了 所以 来学一学用python加密图片吧&#xff01; 代码及相关资源获取 1&#xff1a;关注“python趣味爱好者”公…

java 图片加密

首先&#xff0c;了解下异或操作 ^ &#xff0c;对一个数进行两次异或操作得到原数值。 public class IOTest {public static void main(String[] args) {int i 3;System.out.println(i^123);//120System.out.println(i^123^123);//3}} 将一张图片进行拷贝&#xff0c;对其进…

用JS实现:图片压缩、图片加密

本文将用JavaScript实现两个颇有技术含量的功能&#xff1a;图片压缩、图片加密。 最终效果&#xff1a;可实现将任意图片加密、压缩&#xff0c;并保存到一个独立的html页面中&#xff0c;输入正确的密码&#xff0c;才能看到原图。 第一步、压缩图片 技术原理 将图片读入c…