php 7.1 新特性解析
返回值和传入参数可以指定为 null
<?php
function testReturn(): ?string
{
return 'elePHPant';
}
var_dump(testReturn());
// 此处返回值如果没有问号,那么不能返回 null 值
function testReturn(): ?string
{
return null;
}
var_dump(testReturn());
// 参数类型提示为 ?string 代表可以传入一个 null 类型和 string 类型的值,但是不能不传值
function test(?string $name)
{
var_dump($name);
}
test('elePHPant');
test(null);
test();
void 函数
function swap(&$left, &$right) : void // 在函数定义时,可以将 void 作为返回值类型,并且不能返回 null
短数组语法解析数组元素
<?php
// 可以使用 [] 短数组语法代替 list
$data = [
[2, 'b', 'B'],
[3, 'c', 'C'],
];
// list 可以解析数组的每个元素
foreach ($data as list($id, $lower, $upper)) {
echo $id.$lower.$upper.PHP_EOL;
}
// 7.1 中可以使用两个中括号解析数组,当做 list 来用
foreach ($data as [$id, $lower, $upper]) {
echo $id.$lower.$upper.PHP_EOL;
}
// list 支持自定义键名, 并且只能使用自定义键名进行赋值,无法自动按照顺序进行赋值
$data = [
["id" => 1, "lower" => 'a', 'upper' => 'A'],
];
// data 中 lower 的值赋值给 $id1
["lower" => $id1, "id" => $name1] = $data[0];
类常量可见性
<?php
class ConstDemo
{
const PUBLIC_CONST_A = 1; // 默认还是 public 的
public const PUBLIC_CONST_B = 2; // php7.1之前不允许设置可见性(封装特性)
protected const PROTECTED_CONST = 3;
private const PRIVATE_CONST = 4;
}
iterable 伪类
这个类可以用在参数或者返回值中。并且这个类型的参数或者返回值可以迭代(使用 foreach 遍历元素)
<?php
function iterator(iterable $iter)
{
foreach ($iter as $val) {
//
}
}
多异常捕获
<?php
try {
// some code
} catch (FirstException | SecondException $e) { // 处理多个异常不用为多个异常写多个 catch
// handle first and second exceptions
}
支持为负的字符串偏移量
就是所有的字符串函数偏移量都可以为负数,负数表示偏移量从字符串的最后一位往前数
ext/openssl 支持 AEAD
AEAD 是一个加密标准
[AEAD算法浅析](http://tcca.crypto.cn/thread.aspx?ID=2839 )
HTTP/2 server push support in ext/curl
当用户的浏览器和服务器在建立链接后,服务器主动将一些资源推送给浏览器并缓存起来,这样当浏览器接下来请求这些资源时就直接从缓存中读取,不会在从服务器上拉了,提升了速率。