首頁  >  文章  >  後端開發  >  PHP7.0和7.1 部分新增特性備忘程式碼分享

PHP7.0和7.1 部分新增特性備忘程式碼分享

黄舟
黄舟原創
2018-01-09 13:10:032396瀏覽

以下分別備忘 PHP 7.0 & 7.1 版本的部分新增功能。

PHP 7.0

?? 運算子

$foo = null;
$bar = $foo ?? 123;

// 相当于 $bar = isset($bar) ? $bar : 123

參數類型、傳回型別與嚴格模式

// 在严格模式下,传参类型不匹配会抛出错误

declare(strict_types=1);

function fn(int $a) : int
{
    echo $a;
}

fn(1.2);

#組合比較符

二者相等時回傳 0;

##前者大於後者回傳 1;

後者大於前者回傳-1;

var_dump($a <=> $b);
$a = 0;
$b = "abc";

var_dump($a <=> $b);
// 注意,字符串在与数字比较时会被当作 0;

含有回傳值的

產生器
function generator()
{
    yield 1;
    yield 2;
    return "a";
}

$generator = generator();
foreach ($generator as $val) {
    var_dump($val);
}

var_dump($generator->getReturn());

當沒有回傳值而使用

$generator->getReturn() 時,會傳回null。而且,當生成器沒有輸出完全時,使用 $generator->getReturn() 會報錯。

function generator()
{
    yield 1;
    yield 2;
    return "a";
}

$generator = generator();

var_dump($generator->current());
var_dump($generator->next());

var_dump($generator->getReturn()); // 报错

var_dump($generator->current());
var_dump($generator->next());
定義

常數數組
define(&#39;COLORS&#39;, [&#39;red&#39;, &#39;blue&#39;, &#39;black&#39;]);
echo COLORS[1];  // red

多use 宣告

use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};

陣列解構

#
list($a, $b) = ["a", "b"];

PHP 7.1

JIT

JIT, just in time. 執行時將部分指令轉為機器碼。對於計算密集型應用有較高的效能提升。

可選參數類型

function(?string $name)
{
    var_dump($name);
}

// 传参类型为 string 或 null

注意與預設參數值的差異:

function(string $name = "default-name")
{
    var_dump($name);
}

陣列解構

[$a, $b] = ["a", "b"];

iterable & callable 偽類類型

使用callable 類型代表傳參類型為可呼叫的類型(

函數、實作了invoke 的類別實例);

使用iterable 類型限制傳參類型為可迭代類型( 陣列、實作了Iterator 或Traversable

介面的類別實例);

多重異常類型擷取

try {
    
} catch (OneException | AnotherException $e) {
    
}

以上是PHP7.0和7.1 部分新增特性備忘程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn