PHP5.5到PHP7.2期间有哪些新特性?

2026-04-06 08:281阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计654个文字,预计阅读时间需要3分钟。

PHP5.5到PHP7.2期间有哪些新特性?

PHP5.5至PHP7.2新特性总结:

1.从PHP 5.5.x迁移到PHP 5.6.x时,可以使用表达式定义常量。

2.在早期版本中,必须使用静态值来定义常量,并声明属性和函数参数的默认值。

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

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

使用表达式定义常量

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

<?php const ONE = 1; const TWO = ONE * 2; class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is '.self::THREE; }

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

<?php const ARR = ['a', 'b']; echo ARR[0];

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

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

<?php function f($req, $opt = null, ...$params) { // $params 是一个包含了剩余参数的数组 printf('$req: %d; $opt: %d; number of params: %d'."\n", $req, $opt, count($params)); } f(1); f(1, 2); f(1, 2, 3); f(1, 2, 3, 4); ?>

以上例程会输出:

$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 function add($a, $b, $c) { return $a + $b + $c; } $operators = [2, 3]; echo add(1, ...$operators); ?>

以上例程会输出:

6

use function 以及 use const

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

<?php namespace Name\Space { const FOO = 42; function f() { echo __FUNCTION__."\n"; } } namespace { use const Name\Space\FOO; use function Name\Space\f; echo FOO."\n"; f(); } ?>

以上例程会输出:

PHP5.5到PHP7.2期间有哪些新特性?

42 Name\Space\f

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

本文共计654个文字,预计阅读时间需要3分钟。

PHP5.5到PHP7.2期间有哪些新特性?

PHP5.5至PHP7.2新特性总结:

1.从PHP 5.5.x迁移到PHP 5.6.x时,可以使用表达式定义常量。

2.在早期版本中,必须使用静态值来定义常量,并声明属性和函数参数的默认值。

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

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

使用表达式定义常量

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

<?php const ONE = 1; const TWO = ONE * 2; class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is '.self::THREE; }

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

<?php const ARR = ['a', 'b']; echo ARR[0];

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

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

<?php function f($req, $opt = null, ...$params) { // $params 是一个包含了剩余参数的数组 printf('$req: %d; $opt: %d; number of params: %d'."\n", $req, $opt, count($params)); } f(1); f(1, 2); f(1, 2, 3); f(1, 2, 3, 4); ?>

以上例程会输出:

$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 function add($a, $b, $c) { return $a + $b + $c; } $operators = [2, 3]; echo add(1, ...$operators); ?>

以上例程会输出:

6

use function 以及 use const

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

<?php namespace Name\Space { const FOO = 42; function f() { echo __FUNCTION__."\n"; } } namespace { use const Name\Space\FOO; use function Name\Space\f; echo FOO."\n"; f(); } ?>

以上例程会输出:

PHP5.5到PHP7.2期间有哪些新特性?

42 Name\Space\f

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