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

黄舟
發布: 2023-03-06 18:16:02
原創
2395 人瀏覽過

以下分別備忘 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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!