0

0

PHP5.5到PHP7.2新特性整理

小云云

小云云

发布时间:2018-03-31 11:20:31

|

2500人浏览过

|

来源于php中文网

原创

本文主要和大家分享php5.5到php7.2新特性整理,让大家对php的各个版本都有所了解,希望能帮助到大家。

从PHP 5.5.x 移植到 PHP 5.6.x

新特性

使用表达式定义常量

  • 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

    95Shop仿醉品商城
    95Shop仿醉品商城

    95Shop可以免费下载使用,是一款仿醉品商城网店系统,内置SEO优化,具有模块丰富、管理简洁直观,操作易用等特点,系统功能完整,运行速度较快,采用ASP.NET(C#)技术开发,配合SQL Serve2000数据库存储数据,运行环境为微软ASP.NET 2.0。95Shop官方网站定期开发新功能和维护升级。可以放心使用! 安装运行方法 1、下载软件压缩包; 2、将下载的软件压缩包解压缩,得到we

    下载
  • 现在可以通过 const 关键字来定义类型为 array 的常量。

使用 ... 运算符定义变长参数函数

  • 现在可以不依赖 func_get_args(), 使用 … 运算符 来实现 变长参数函数。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2

使用 ... 运算符进行参数展开

  • 在调用函数的时候,使用 … 运算符, 将 数组 和 可遍历 对象展开为函数参数。 在其他编程语言,比如 Ruby中,这被称为连接运算符。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

6

use function 以及 use const

  • use 运算符 被进行了扩展以支持在类中导入外部的函数和常量。 对应的结构为 use function 和 use const。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

42
Name\Space\f

使用 hash_equals() 比较字符串避免时序攻击

从PHP 5.6.x 移植到 PHP 7.0.x

新特性

标量类型声明

  • 标量类型声明 有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

int(9)

返回值类型声明

  • PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。

null合并运算符

  • 由于日常使用中存在大量同时使用三元表达式和 isset()的情况, 我们添加了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。

太空船操作符(组合比较符)

  • 太空船操作符用于比较两个表达式。当

    b时它分别返回-1、0或1。 比较的原则是沿用 PHP 的常规比较规则进行的。

 '1'; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1// 浮点数echo '1.50' <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1// 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1?>

通过 define() 定义常量数组

  • Array 类型的常量现在可以通过 define() 来定义。在 PHP5.6 中仅能通过 const 定义。

define('ANIMALS', [    'dog',    'cat',    'bird']);
echo ANIMALS[1]; // 输出 "cat"

Closure::call()

  • Closure::call() 现在有着更好的性能,简短干练的暂时绑定一个方法到对象上闭包并调用它。

x;};$getX = $getXCB->bindTo(new A, 'A'); // 中间层闭包echo $getX();// PHP 7+ 及更高版本的代码$getX = function() {return $this->x;};echo $getX->call(new A);

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

1

分组 use 声明

  • 从同一 namespace 导入的类、函数和常量现在可以通过单个 use 语句 一次性导入了。

生成器可以返回表达式

  • 此特性基于 PHP 5.5 版本中引入的生成器特性构建的。 它允许在生成器函数中通过使用 return 语法来返回一个表达式 (但是不允许返回引用值), 可以通过调用 Generator::getReturn() 方法来获取生成器的返回值, 但是这个方法只能在生成器完成产生工作以后调用一次。

整数除法函数 intp()


从PHP 7.0.x 移植到 PHP 7.1.x

新特性

可为空(Nullable)类型

  • 参数以及返回值的类型现在可以通过在类型前加上一个问号使之允许为空。 当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

string(10) "elePHPant"
NULL
string(10) "elePHPant"
NULL
Uncaught Error: Too few arguments to function test(), 0 passed in...

Void 函数

  • 一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,NULL 不是一个合法的返回值。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

null
int(2)
int(1)

Symmetric array destructuring

  • 短数组语法([])现在作为list()语法的一个备选项,可以用于将数组的值赋给一些变量(包括在foreach中)。

类常量可见性

  • 现在起支持设置类常量的可见性。

iterable 伪类

  • 现在引入了一个新的被称为iterable的伪类 (与callable类似)。 这可以被用在参数或者返回值类型中,它代表接受数组或者实现了Traversable接口的对象。 至于子类,当用作参数时,子类可以收紧父类的iterable类型到array 或一个实现了Traversable的对象。对于返回值,子类可以拓宽父类的 array或对象返回值类型到iterable。

多异常捕获处理

  • 一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用。

list()现在支持键名

  • 现在list()和它的新的[]语法支持在它内部去指定键名。这意味着它可以将任意类型的数组 都赋值给一些变量(与短数组语法类似)

 1, "name" => 'Tom'],
    ["id" => 2, "name" => 'Fred'],
];// list() stylelist("id" => $id1, "name" => $name1) = $data[0];// [] style["id" => $id1, "name" => $name1] = $data[0];// list() styleforeach ($data as list("id" => $id, "name" => $name)) {    // logic here with $id and $name}// [] styleforeach ($data as ["id" => $id, "name" => $name]) {    // logic here with $id and $name}

从PHP 7.1.x 移植到 PHP 7.2.x

新特性

新的对象类型

  • 这种新的对象类型, object, 引进了可用于逆变(contravariant)参数输入和协变(covariant)返回任何对象类型。

允许重写抽象方法(Abstract method)

  • 当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。

abstract class A{
    abstract function test(string $s);}abstract class B extends A{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;}

扩展了参数类型

  • 重写方法和接口实现的参数类型现在可以省略了。不过这仍然是符合LSP,因为现在这种参数类型是逆变的。

interface A{
    public function Test(array $input);}class B implements A{
    public function Test($input){} // type omitted for $input}

允许分组命名空间的尾部逗号

  • 命名空间可以在PHP 7中使用尾随逗号进行分组引入。

use Foo\Bar\{    Foo,    Bar,    Baz,
};

http://php.net/manual/zh/appendices.php

从PHP 5.5.x 移植到 PHP 5.6.x

新特性

使用表达式定义常量

  • 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

  • 现在可以通过 const 关键字来定义类型为 array 的常量。

使用 ... 运算符定义变长参数函数

  • 现在可以不依赖 func_get_args(), 使用 … 运算符 来实现 变长参数函数。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2

使用 ... 运算符进行参数展开

  • 在调用函数的时候,使用 … 运算符, 将 数组 和 可遍历 对象展开为函数参数。 在其他编程语言,比如 Ruby中,这被称为连接运算符。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

6

use function 以及 use const

  • use 运算符 被进行了扩展以支持在类中导入外部的函数和常量。 对应的结构为 use function 和 use const。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

42
Name\Space\f

使用 hash_equals() 比较字符串避免时序攻击

从PHP 5.6.x 移植到 PHP 7.0.x

新特性

标量类型声明

  • 标量类型声明 有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

int(9)

返回值类型声明

  • PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。

null合并运算符

  • 由于日常使用中存在大量同时使用三元表达式和 isset()的情况, 我们添加了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。

太空船操作符(组合比较符)

  • 太空船操作符用于比较两个表达式。当

    b时它分别返回-1、0或1。 比较的原则是沿用 PHP 的常规比较规则进行的。

 '1'; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1// 浮点数echo '1.50' <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1// 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1?>

通过 define() 定义常量数组

  • Array 类型的常量现在可以通过 define() 来定义。在 PHP5.6 中仅能通过 const 定义。

define('ANIMALS', [    'dog',    'cat',    'bird']);
echo ANIMALS[1]; // 输出 "cat"

Closure::call()

  • Closure::call() 现在有着更好的性能,简短干练的暂时绑定一个方法到对象上闭包并调用它。

x;};$getX = $getXCB->bindTo(new A, 'A'); // 中间层闭包echo $getX();// PHP 7+ 及更高版本的代码$getX = function() {return $this->x;};echo $getX->call(new A);

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

1

分组 use 声明

  • 从同一 namespace 导入的类、函数和常量现在可以通过单个 use 语句 一次性导入了。

生成器可以返回表达式

  • 此特性基于 PHP 5.5 版本中引入的生成器特性构建的。 它允许在生成器函数中通过使用 return 语法来返回一个表达式 (但是不允许返回引用值), 可以通过调用 Generator::getReturn() 方法来获取生成器的返回值, 但是这个方法只能在生成器完成产生工作以后调用一次。

整数除法函数 intp()


从PHP 7.0.x 移植到 PHP 7.1.x

新特性

可为空(Nullable)类型

  • 参数以及返回值的类型现在可以通过在类型前加上一个问号使之允许为空。 当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

string(10) "elePHPant"
NULL
string(10) "elePHPant"
NULL
Uncaught Error: Too few arguments to function test(), 0 passed in...

Void 函数

  • 一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,NULL 不是一个合法的返回值。

以上例程会输出:

立即学习PHP免费学习笔记(深入)”;

null
int(2)
int(1)

Symmetric array destructuring

  • 短数组语法([])现在作为list()语法的一个备选项,可以用于将数组的值赋给一些变量(包括在foreach中)。

类常量可见性

  • 现在起支持设置类常量的可见性。

iterable 伪类

  • 现在引入了一个新的被称为iterable的伪类 (与callable类似)。 这可以被用在参数或者返回值类型中,它代表接受数组或者实现了Traversable接口的对象。 至于子类,当用作参数时,子类可以收紧父类的iterable类型到array 或一个实现了Traversable的对象。对于返回值,子类可以拓宽父类的 array或对象返回值类型到iterable。

多异常捕获处理

  • 一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用。

list()现在支持键名

  • 现在list()和它的新的[]语法支持在它内部去指定键名。这意味着它可以将任意类型的数组 都赋值给一些变量(与短数组语法类似)

 1, "name" => 'Tom'],
    ["id" => 2, "name" => 'Fred'],
];// list() stylelist("id" => $id1, "name" => $name1) = $data[0];// [] style["id" => $id1, "name" => $name1] = $data[0];// list() styleforeach ($data as list("id" => $id, "name" => $name)) {    // logic here with $id and $name}// [] styleforeach ($data as ["id" => $id, "name" => $name]) {    // logic here with $id and $name}

从PHP 7.1.x 移植到 PHP 7.2.x

新特性

新的对象类型

  • 这种新的对象类型, object, 引进了可用于逆变(contravariant)参数输入和协变(covariant)返回任何对象类型。

允许重写抽象方法(Abstract method)

  • 当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。

abstract class A{
    abstract function test(string $s);}abstract class B extends A{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;}

扩展了参数类型

  • 重写方法和接口实现的参数类型现在可以省略了。不过这仍然是符合LSP,因为现在这种参数类型是逆变的。

interface A{
    public function Test(array $input);}class B implements A{
    public function Test($input){} // type omitted for $input}

允许分组命名空间的尾部逗号

  • 命名空间可以在PHP 7中使用尾随逗号进行分组引入。

use Foo\Bar\{    Foo,    Bar,    Baz,
};

相关推荐:

PHP5各个版本的新功能和新特性总结

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号