本文作者:心月

PHP5.5.X到PHP5.6.X的新增特性

心月IT博客 2019-04-10
PHP5.5.X到PHP5.6.X的新增特性摘要:在 PHP5 5 x 之前的版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 而 PHP5 6 X 之后可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

1、使用表达式定义常量

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

使用表达式定义常量

    PHP5.6.X 可以通过 const 关键字来定义数组类型的常量。

使用const定义数组类型的常量


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

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

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

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

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

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

3、use function 以及 use const

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

use function 以及 use const

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

    在 php 中比较字符串相等时如果使用双等 == 可能会有时序攻击的危险.

比如,比较:

"abscdd" == $request->code;

    那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就可以按位破解。

    而使用 hash_equals 比较两个字符串,无论字符串是否相等,函数的时间消耗是恒定的,这样可以有效的防止时序攻击。

hash_equals('abscdd',$request->code);


文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-04-10
若转载请注明原文及出处:https://www.xinyueseo.com/other/233.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论