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
當用戶的瀏覽器和服務器在建立鏈接后,服務器主動將一些資源推送給瀏覽器並緩存起來,這樣當瀏覽器接下來請求這些資源時就直接從緩存中讀取,不會在從服務器上拉了,提升了速率。