日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP8.0新功能之Match表達式的使用

瀏覽:264日期:2022-09-09 15:05:37

上個月下旬PHP社區發布是PHP8第一個,正式版本也將于今年年底發布。PHP8帶來來那個兩個最令人激動的特性:JIT和match表達式。

PHP8.0新功能之Match表達式的使用

本文我們要說另一個新引入的語法match表達式語法,可以說是PHP 8引入的最好的功能之一,它使用類似switch的語法。

PHP8.0新功能之Match表達式的使用

基本功能

$status = match($request_method) { ’post’ => $this->handlePost(), ’get’, ’head’ => $this->handleGet(), default => throw new Exception(’Unsupported’), };

用switch...case做對比,要實現上面的功能,代碼要略繁瑣一點:

switch ($request_method) { case ’post’: $status = $this->handlePost(); break; case ’get’: case ’head’: $status = $this->handleGet(); break; default: throw new Exception(’Unsupported’); };

相比switch, match會直接返回值,無需中間變量(比如上例中的$status)。

表達式可以返回一個值

在每個分支可以被分配給一個變量。

$name = match(2) { 1 => ’One’, 2 => ’Two’, };

不必再將返回值分配給其他中變量,匹配的語句返回值可直接從match表達式中返回。

可匹配多個條件

match表達式可能包含一個或多個匹配條件,它們的行為類似于塊中的多個級聯case鍵switch。

match($request_method) { ’post’ => $this->handlePost(), ’get’, ’head’ => $this->handleGet(), };

滿足$request_method === ’get’和$request_method === ’head’兩個條件都會執行$this->handleGet()。

每個分支只能包含一個表達式

與switch可以包含任意數量的表達式的塊不同,一條match語句只能包含一個表達式。

match($name) { ’XXX’ => init(); doth(); };

上面的語法錯誤的。=>只能有一個表達式。

隱含的break

match表達式的每個匹配分支僅允許一個表達式,并且無需switch塊一樣的break。

switch (’test’) { case ’test’: $this->doTest (); case ’send’: $this->sendmsg (); }

在switch...caser容易犯的錯誤是忘記了break語句,這會使流程直接進入下一分支。在上面的switch塊中,缺少break;語句會使代碼$this->doTest()無法正常執行執行。

match (’test’) { ’test’ => $this->doTest (), ’send’ => $this->sendmsg (), };

match表達式無需顯式break語句即可工作。它只執行一個match分支,并立即返回該值。

default分支

match語句支持一個default分支,該分支工作原理與switch...case塊中的default情況類似。如果沒有其他條件相匹配,將執行default match分支。

match (’DEF’) { ’aaa’ => ..., ’bbb’ => ..., default => echo ’NO matching: ’ . $name, }; // 'NO matchin: DEFF'

match表達式必須符合條件

switch如果沒有匹配case鍵,則block靜默進行代碼流。match表達式沒有。

在match表達式中,必須存在與表達式匹配的條件或default要處理的條件。如果沒有匹配項,而且為設置default分支,match表達式將會引發UnhandledMatchError異常。

$value = 3; match($value) { 1 => ’One’, 2 => ’Two’, };

上面的代碼執行時候會拋出錯誤:

Fatal error: Uncaught UnhandledMatchError in ...

matchUnhandledMatchError如果表達式中沒有匹配項,則表達式將引發異常。

UnhandledMatchError是PHP 8中的新異常類,它擴展了Error。有關所有PHP核心異常類的完整層次結構。

該類可以很容易地擴展:

class UnhandledMatchError extends Error {}

對非強制類型的嚴格匹配

match表達式中最重要的設計選擇之一是它對非強制類型的匹配。

function read(mixed $key): string { return match ($key) { 1 => ’Integer 1’, ’1’ => ’String 1’, true => ’Bool true’, [] => ’Empty array’, [1] => ’Array [1]’, }; } read(1); // 'Integer 1' read(’1’); // 'String 1'

在典型的switch塊中,其大小寫是松散匹配的,即與==。在match表達式中,所有匹配的分支都經過嚴格的比較(===)匹配。

在上面的代碼段中,每個單獨的分支都將匹配其值和類型。

匹配任意表達式

match 表達式允許給定值與表達式匹配。

match($httpst){ 404 => ’Page not found’, Response::REDIRECT => ’Redirect’, $client->getCode() => ’Client Error’, $response->getCode() => ’Response Error’, default => ’Unknown error’ };

表達式將按照其排列順序進行求值。

match表達式將嘗試$httpst按以下順序進行匹配:

1. $httpst === 404 2. $httpst === Response::REDIRECT 3. $httpst === $client->getCode() 4. $httpst === $response->getCode() 5. default

如果找到正匹配,則將不會對其他分支進行嘗試,直接返回。

match VS switch

PHP8.0新功能之Match表達式的使用

向后兼容性影響

match表達式是PHP 8中的新語法。使用match表達式的代碼在較舊的PHP版本中將不起作用。

到此這篇關于PHP8.0新功能之Match表達式的使用的文章就介紹到這了,更多相關PHP8.0 Match表達式內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩视频一区| 蜜臀久久精品| 国产综合激情| 日韩精品影视| 深夜视频一区二区| 日韩伦理福利| 91精品一区二区三区综合| 国产麻豆久久| 999国产精品永久免费视频app| 日韩国产一区二区| 日韩高清中文字幕一区二区| 日韩在线观看不卡| 欧美日韩中文一区二区| 亚洲午夜视频| 女同性一区二区三区人了人一| 五月天久久777| 久久久五月天| 午夜精品影院| 一区二区三区四区精品视频| 一区二区国产精品| 91亚洲精品视频在线观看| 无码日韩精品一区二区免费| 亚洲综合婷婷| 国产免费av一区二区三区| 欧美精品国产| 激情不卡一区二区三区视频在线| 国产白浆在线免费观看| 99精品电影| 美女精品在线| 欧美一区二区三区久久| 麻豆一区在线| 亚洲欧美日韩高清在线| 日韩和欧美一区二区三区| 美日韩一区二区三区| 欧美国产一级| 中文日韩在线| 国产欧美日韩精品一区二区免费| 免费一区二区三区在线视频| 久久精品观看| 综合欧美亚洲| 精品久久一区| 亚洲欧美日韩高清在线| 91免费精品国偷自产在线在线| 超级白嫩亚洲国产第一| 激情六月综合| 欧美在线黄色| 国产成人精品一区二区三区免费| 成人av二区| 国产欧美一区二区三区米奇| 日韩欧美看国产| 蜜芽一区二区三区| 欧美韩日一区| 丝袜美腿一区二区三区| 精品中文在线| 红桃视频国产精品| 精品中文字幕一区二区三区| 午夜在线精品偷拍| 精品视频在线一区二区在线| 狠狠爱成人网| 精品一区二区三区在线观看视频| 欧美精品一线| 国产日产精品_国产精品毛片 | 日本欧美不卡| 亚洲精品在线二区| av日韩中文| 日韩欧美2区| 91精品婷婷色在线观看| 日韩高清在线一区| 久久免费黄色| 亚洲乱码久久| 日韩国产欧美一区二区| 日本中文字幕不卡| 久久国产亚洲| 国产日韩欧美一区二区三区| 亚洲欧洲一区| 精品国产免费人成网站| 亚洲日韩中文字幕一区| 久久免费国产| 欧美xxxx性| 蜜桃av一区二区在线观看| 久久uomeier| 国产亚洲欧美日韩精品一区二区三区 | 欧美韩日一区| 日韩黄色av| 欧美日韩国产一区精品一区| 久久精品免费看| 日韩中出av| 午夜欧美在线| 国产精品高颜值在线观看| 欧美一区在线观看视频| 99国产精品视频免费观看一公开| 日产精品一区二区| 欧美成人a交片免费看| 欧美一区精品| 久热精品在线| 激情婷婷综合| 三级小说欧洲区亚洲区| 精品久久97| 久久的色偷偷| 88久久精品| 亚洲我射av| 在线视频日韩| 久久精品导航| 久久免费国产| 日韩一区电影| 国产精品v一区二区三区| 最新亚洲国产| 免费欧美在线视频| 亚洲一区日本| 九一国产精品| 欧美日韩一二三四| 久久国产主播| 99精品视频精品精品视频| 日韩毛片视频| 日韩美女国产精品| 亚洲精品乱码| 免费成人在线视频观看| 视频在线观看一区| aⅴ色国产欧美| 在线视频精品| 在线日韩中文| 亚洲福利久久| 欧美日韩国产高清电影| 欧美日韩国产一区二区三区不卡| 久久免费大视频| 五月天久久777| 午夜欧美在线| 亚洲综合日韩| 中文字幕一区二区三区日韩精品| 蜜桃久久av一区| 日韩在线麻豆| 国产欧美日韩一级| 麻豆久久一区二区| 精品久久国产一区| 欧美精品日日操| 免费在线小视频| 久久精品一区二区不卡| 亚洲国产专区| 久久高清一区| 亚洲精品成人一区| 日韩国产欧美三级| 国产精品三级| 福利一区二区免费视频| 欧美好骚综合网| 美女亚洲一区| 首页国产欧美日韩丝袜| 日本欧美一区二区在线观看| 国产欧美日韩精品一区二区免费| 国产精品欧美日韩一区| 亚洲午夜91| 亚洲有吗中文字幕| 日韩久久一区| 免费观看亚洲天堂| 日韩久久电影| 久久av在线| 国产精品天堂蜜av在线播放| 成人在线超碰| 欧美不卡在线| 中文字幕亚洲精品乱码| 国产精品视频3p| 色婷婷精品视频| 日韩专区欧美专区| 欧美日韩在线精品一区二区三区激情综合 | 精品成人免费一区二区在线播放| 精精国产xxxx视频在线播放| 激情综合在线| 日韩高清一区| 精品国产美女a久久9999| 久久精品高清| 日本综合精品一区| 黄色aa久久| 日韩专区欧美专区| 国产精品免费99久久久| 鲁鲁在线中文| 久久国产精品99国产| 国产精品美女午夜爽爽| 少妇精品导航| 日韩免费精品| 日韩啪啪电影网| 国产视频一区欧美| 国产福利资源一区| 伊人久久婷婷| 麻豆国产欧美日韩综合精品二区| 激情丁香综合| 国产精品白丝久久av网站| 国户精品久久久久久久久久久不卡| 亚洲日本久久| 欧美精品资源| 国产亚洲精品精品国产亚洲综合| 日韩欧美午夜| 国产无遮挡裸体免费久久| 国产99久久| 国产精品久久久久av蜜臀 | 亚洲性视频h| 日本不卡不码高清免费观看| 美女一区网站| 国产日韩亚洲| 中文一区二区| 国产中文在线播放| 日韩免费精品|