php7的性能有极大的提升。
太空串操作符<=>用于比较两个表达式,例如当a分别小于丶等于丶大于b时分别会返回-1,0,1
类型提示, 通过使用
declare(strict_types=1);
, strict_types=1表示开启严格模式,当传入的参数类型不合法时会报错。null合并操作符:
??
, php7前使用三元表达式来判断一个值是否为null来返回不同的值,如:`_GET['page']) ?
page = isset($_GET['page']) ?? 1;`。
常量数组, 通过
define('NUMS', [1, 2, 3]);
定义常量数组,该数组是不可以被修改的。NameSpace批量导入, php7前导入命名空间需要一行一个,如:
use Encore\Admin\Auth\Database\Administrator; use Encore\Admin\Auth\Database\Menu; use Encore\Admin\Auth\Database\Role; use Encore\Admin\Auth\Database\Permission;
php7使用一行代码即可,节省了代码量。use Encore\Admin\Auth\Database\{Administrator, Menu, Role, Permission};
- throwable接口, 例如该段代码:
try { underfindfunc(); }catch (Error $e){ var_dump($e); }
在php5中catch无法捕获, 在php7中可以捕获, 还可以通过set_exception_handle()进行捕获:
// 通过此函数也可以捕获 set_exception_handler( function ($e) { var_dump($e); } ); underfindfunc();
- Closure::call(), 通过闭包函数可操作类私有变量, 例如:
<?php class Person { private $age = 10; } $f = function () { $this->age = 20; return $this->age; }; echo $f->call(new Person()); // 输出20
intdiv 整除函数, 在php5中整除需要进行转int,如:`
num = intdiv(10, 3);`。
list的方括号写法, php5中list:
$arr = [1,2,3]; list($a, $b, $c) = $arr;
php7(php7.1之后)中可简化为:
$arr = [1,2,3]; [$a, $b, $c] = $arr;
- 匿名类, php7中可以通过new class来创建匿名类对象, 如:
$obj = new class { public $num = 10; }; echo $obj->num;
为 unserialize() 提供过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据。
IntlChar, 这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。
random_bytes() - 加密生生成被保护的伪随机字符串, random_int() - 加密生成被保护的伪随机整数。
session_start() 函数可以接收一个数组作为参数,可以覆盖 php.ini 中 session 的配置项。
移除扩展:ereg,mssql,mysql,sybase_ct