php 7.1 新特性解析


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

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

http server push

參考:

7.1新特性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM