PHP7常用新特性介绍

冰冻三尺 发布于1年前

1.PHP 标量类型与返回值类型声明

PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式:

强制模式 (默认)

严格模式

 

2.PHP NULL 合并运算符 

PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。

NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。

例如: $a ?  $a : 0; 改为  $a ?? 0;

 

3.PHP 太空船运算符(组合比较符)

PHP 7 新增加的太空船运算符(组合比较符)用于比较两个表达式 $a 和 $b,如果 $a 小于、等于或大于 $b时,它分别返回-1、0或1。
例如:

print( 1 <=> 1);print(PHP_EOL); 结果 0
print( 1 <=> 2);print(PHP_EOL); 结果 -1
print( 2 <=> 1);print(PHP_EOL); 结果 1
print(PHP_EOL); // PHP_EOL 为换行符

 

4.PHP 常量数组

在 PHP 5.6 中仅能通过 const 定义常量数组,PHP 7 可以通过 define() 来定义。

例如:define('sites', ['Google','Runoob','Taobao']);

 

5.匿名类

PHP 7 支持通过 new class 来实例化一个匿名类,这可以用来替代一些"用后即焚"的完整类定义。

 

6.PHP 过滤 unserialize()

PHP 7 增加了可以为 unserialize() 提供过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据。

 

7.PHP 7 use 语句

PHP 7 可以使用一个 use 从同一个 namespace 中导入类、函数和常量;

 

8.PHP 7 错误处理

PHP 7 改变了大多数错误的报告方式。不同于 PHP 5 的传统错误报告机制,现在大多数错误被作为 Error 异常抛出。

这种 Error 异常可以像普通异常一样被 try / catch 块所捕获。如果没有匹配的 try / catch 块, 则调用异常处理函数(由 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。

Error 类并不是从 Exception 类 扩展出来的,所以用 catch (Exception $e) { ... } 这样的代码是捕获不 到 Error 的。你可以用 catch (Error $e) { ... } 这样的代码,或者通过注册异常处理函数( set_exception_handler())来捕获 Error。

 

9.PHP 7 Session 选项

PHP 7 session_start() 函数可以接收一个数组作为参数,可以覆盖 php.ini 中 session 的配置项。

这个特性也引入了一个新的 php.ini 设置(session.lazy_write), 默认情况下设置为 true,意味着 session 数据只在发生变化时才写入。

除了常规的会话配置指示项, 还可以在此数组中包含 read_and_close 选项。如果将此选项的值设置为 TRUE, 那么会话文件会在读取完毕之后马上关闭, 因此,可以在会话数据没有变动的时候,避免不必要的文件锁。

 

10.PHP 7 移除的扩展

PHP 7+ 版本移除了以下扩展:ereg,mssql,mysql,sybase_ct。

这有关于PHP7新特性视频教程:https://www.sucaihuo.com/video/167.html

大家也可以看看。

  • 冰冻三尺