据说,PHP7的新能有了较大的提升.不仅如此PHP7的升级可以给我带来更多新特性!
首先介绍一些常用的新特性.
null合并运算
$username = $_GET['user'] ?? 'nobody';
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
上述两个代码是等价的??
提供了相当方便的操作,如果不空返回自己,如果为空则返回’nobody’.
返回类型声明
这个的确比较常用,这可以让我们更好、更方便、上升到语言层面去定义返回的类型.之前是用文档去标记返回类型.只需要在相应的函数、方法、闭包后面加入: 类型
即可
function arraysSum(array ...$arrays): array
{
return array_map(function(array $array): int {
return array_sum($array);
}, $arrays);
}
define定义常量数组
这个就比较重要了,之前的常量都是义字符串为主.
define('ANIMALS', [
'dog',
'cat',
'bird'
]);
echo ANIMALS[1]; // outputs "cat"
不起眼但很实用intdiv()
与除法运算相比之下,intdiv()
直接返回一个整数结果.一个小函数给开发带来了方便.
Unicode语法转译
这接受16进制形式的Unicode codepoint,并打印出一个UTF-8编码格式的字符,并且开头的0是省略的.
echo "\u{aa}";
a
标量类型的声明
此举进一步加深了对PHP类型声明的限定.由注释文档层次,到语言层级提高了代码的可读性.
无论是强制模式还是严格模式,可以使用以下声明:
int
整数
string
字符串
float
浮点数
其他新的特性
匿名类:说实话用的比较少,对代码的组织结构有一定的影响.
太空船操作符:用于比较两个表达式.沿用的是.
IntlChar:新增加的 IntlChar 类旨在暴露出更多的 ICU 功能。这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。
assert:预期,预期是向后兼用并增强之前的 assert() 的方法。 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。
use 导入
使用use
可以一次性导入函数与常量
use function some\namespace\{fn_a, fn_b, fn_c};
其余的新特性不在这里做介绍.