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

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

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

瀏覽:267日期: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久久,三上悠亚国产精品一区二区三区
亚洲午夜久久久久久尤物| 最近高清中文在线字幕在线观看1| 国产日韩免费| 免费黄网站欧美| 亚洲精品无吗| 婷婷成人综合| 夜久久久久久| 中文字幕免费一区二区| 在线一区视频观看| 久久a爱视频| 美女av在线免费看| 国产极品模特精品一二| 久久精品一区二区国产| 亚洲精品乱码日韩| 久久国产福利| 国产美女一区| 三级亚洲高清视频| 99国产精品久久久久久久| 久久国产中文字幕| 久久xxxx| 午夜一级在线看亚洲| 亚洲tv在线| 里番精品3d一二三区| 国产伦一区二区三区| 国产调教一区二区三区| 美女福利一区二区三区| 激情久久久久久久| 亚洲精品在线a| 亚洲综合精品| 91精品国产自产观看在线| 捆绑调教美女网站视频一区| 亚洲欧洲高清| 欧美日韩一二三四| 五月天久久久| 欧美日韩亚洲一区在线观看| 国产不卡人人| 国产一区观看| 日韩精品导航| 久久黄色影视| 日韩精品1区| 日韩精品一级中文字幕精品视频免费观看| 免费观看久久久4p| 日韩精品第一| 在线观看精品| 91精品一区| 亚洲一区二区动漫| 久久国产精品色av免费看| 欧美亚洲三级| 久久久久91| 欧美激情一区| 欧美日韩第一| av高清一区| 亚洲精品在线二区| 91一区二区| 亚洲精品影视| 日韩一区二区免费看| 亚洲免费专区| 日韩综合一区二区| 精品国产乱码久久久久久樱花| 99精品99| 午夜久久久久| **爰片久久毛片| 91大神在线观看线路一区| 欧美日韩国产高清| 伊人精品视频| 999久久久亚洲| 国精品一区二区三区| 日本一二区不卡| 精品三级国产| 麻豆精品一区二区综合av| 欧美视频一区| 一区二区三区国产在线| 欧美~级网站不卡| 在线人成日本视频| 日韩.com| 国内精品麻豆美女在线播放视频| 亚洲精品.com| 九九久久国产| 日韩欧美四区| 日本中文字幕一区二区视频| 岛国av免费在线观看| 亚洲午夜91| 蜜臀精品一区二区三区在线观看| 午夜欧美在线| 久久精品国产亚洲一区二区三区| 欧美日本不卡高清| 99久久99久久精品国产片果冰| 精品三级在线| 日韩视频一区二区三区在线播放免费观看| 亚洲精品极品少妇16p| 久久人人88| 四虎在线精品| 激情久久一区二区| 亚洲欧美伊人| 日本不卡视频一二三区| 97视频热人人精品免费| 日韩精品国产欧美| 日韩不卡免费视频| 日韩在线成人| 不卡在线一区| 亚洲精品中文字幕乱码| 蜜桃久久久久久久| 97国产成人高清在线观看| 91偷拍一区二区三区精品| 高清av一区| 国产一区二区三区不卡视频网站 | 97精品资源在线观看| 欧美国产偷国产精品三区| 视频一区中文字幕精品| 一区二区日韩免费看| 亚洲精品三级| 国产综合欧美| 国产精品91一区二区三区| 亚洲国产不卡| 国产亚洲精品久久久久婷婷瑜伽| 久久精品国产在热久久| 欧美一区二区三区久久精品| 亚洲一区二区三区四区电影| 一区二区自拍| 亚洲精品国产精品粉嫩| 九一精品国产| 日韩中文一区二区| 欧美精品黄色| 亚洲一区二区免费看| 免费一级片91| 亚洲电影在线| 日韩精品视频在线看| 香蕉久久夜色精品国产| 国产欧美激情| 中文字幕一区久| 国产精品呻吟| 国产欧美自拍| 日韩区欧美区| 亚洲精品免费观看| 亚洲人妖在线| 亚洲精品一级| 日韩二区三区四区| 国产精品原创| 国内自拍视频一区二区三区| 久久99视频| 久久影视三级福利片| 精品五月天堂| 国产视频一区在线观看一区免费| 欧美日韩免费观看视频| 99在线|亚洲一区二区| 日韩高清欧美激情| 天堂av在线一区| 亚洲一区欧美| 精品久久久久中文字幕小说| 亚洲午夜黄色| 久久国产视频网| 久久婷婷激情| 欧美日韩一二三四| 国产欧美69| 国产精品亚洲片在线播放| 久久xxx视频| 亚洲综合小说| 国产粉嫩在线观看| 日韩一区三区| 91精品啪在线观看国产爱臀| 高清精品久久| 美国三级日本三级久久99| 蜜桃av一区二区在线观看| 亚洲一区二区毛片| 欧美一区精品| 美国三级日本三级久久99| 国产成人免费| 欧美一区二区三区激情视频| 久久国产三级| 婷婷综合激情| 精品一区二区三区亚洲| 夜久久久久久| 国产精品免费精品自在线观看| 欧美日韩色图| 99在线|亚洲一区二区| 日产欧产美韩系列久久99| 欧美a在线观看| 亚洲香蕉久久| 国产精品综合色区在线观看| 亚洲丝袜美腿一区| 日韩高清不卡一区二区| 成人精品久久| 国产亚洲精品久久久久婷婷瑜伽| 国产一区2区在线观看| 日韩精品三区四区| 激情五月综合网| 久久夜色精品| 五月天激情综合网| 日本免费一区二区三区四区| 69精品国产久热在线观看| 99精品电影| 亚洲精品少妇| 亚洲三级精品| 久久亚洲精精品中文字幕| 国产欧美一区二区精品久久久| 国产精品蜜芽在线观看| 男人的天堂久久精品| 日韩午夜黄色| 国产精品成人一区二区网站软件| 国产亚洲激情|