PHP7新特性 簡要筆記

PHP7除了在解析方面做了深度優化之外,還在語法用法上有了新功能新特性,參考PHP手冊,做了簡要筆記;

1.指定標量類型(指定函數參數類型)

<?php
// Coercive mode
function sumOfInts(int ...$ints) //省略號代表傳入多個參數並存儲在ints容器中
{
    return array_sum($ints);
}

var_dump(sumOfInts(2, '3', 4.1));

2.指定返回值類型

function foo(int $int ):int{
    return $int;
}

3.嚴格模式

 declare(strict_types=1);

該模式就是當函數輸入輸出類型被匹配時,需要嚴格輸入輸出相應類型的數據,否則報錯;

4.NULL合併運算符

<?php
//小於PHP7版本
isset($tmp['key'])?$tmp['key']:'nothing';
//現在版本
$tmp['key]??'nothing';

5.spaceship操作符
用於取得兩變量的大小比較結果

echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

6.define常量數組

define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // outputs "cat"

7.定義匿名類

foo($tmp){
    echo $tmp->name;
}

foo(new class ABC{public name="ABC";});

8.閉包函數的CALL方法(Javascript的call用法的山寨版)

<?php
class A {private $x = 1;}

// Pre PHP 7 code
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
echo $getX();

// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new A);

9.Unicode codepoint 轉譯語法

echo "\u{9999}"; //輸出香

10.USE的批量導入

use some\namespace\{ClassA, ClassB, ClassC as C};

11.生成器用法的拓展(Generator::getReturn())
就是在生成器中使用return,使用時用過Generator::getReturn()來回去返回值,如:

<?php

$gen = (function() {
    yield 1;
    yield 2;

    return 3;
})();

foreach ($gen as $val) {
    echo $val, PHP_EOL;
}

echo $gen->getReturn(), PHP_EOL;
發佈了67 篇原創文章 · 獲贊 31 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章