PHP8.1有什么新特性

這篇文章主要介紹“PHP 8.1有什么新特性”,在日常操作中,相信很多人在PHP 8.1有什么新特性問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”PHP 8.1有什么新特性”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

在昌邑等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站制作,昌邑網(wǎng)站建設(shè)費(fèi)用合理。

PHP 8.1目前正在積極開發(fā)中,可能會(huì)在2021年11月末左右發(fā)布。我們已經(jīng)了解了一些函數(shù),更改和不贊成使用的內(nèi)容,因此讓我們逐一介紹它們。

# New features

與每個(gè)版本一樣,PHP 8.1添加了一些不錯(cuò)的新函數(shù)。請(qǐng)記住,該列表將在一年中增長。我還將列出尚未實(shí)現(xiàn)的函數(shù),但是很有可能最終使用該語言。我將確保始終標(biāo)記這些函數(shù)。

# 用字符串鍵解包數(shù)組 RFC

PHP 7.4 中已經(jīng)允許數(shù)組拆包,但它僅適用于數(shù)字鍵。之前不支持字符串鍵的原因是因?yàn)殛P(guān)于如何合并數(shù)組重復(fù)項(xiàng)沒有任何共識(shí)。 RFC通過遵循 array_merge 的語義來徹底解決此問題:

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];var_dump($array); // ["a" => 1, "b" => 2]

# 新增 array_is_list 函數(shù) RFC

您可能需要不時(shí)處理一次:確定數(shù)組的鍵是否按數(shù)字順序,從索引0開始。就像 json_encode 決定是否應(yīng)將數(shù)組編碼為數(shù)組或?qū)ο蟆?/p>

PHP 8.1添加了一個(gè)內(nèi)置函數(shù)來確定數(shù)組是否是具有這些語義的列表:

$list = ["a", "b", "c"];array_is_list($list); // true$notAList = [1 => "a", 2 => "b", 3 => "c"];array_is_list($notAList); // false$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];array_is_list($alsoNotAList); // false

# 八進(jìn)制整數(shù)表示法 RFC

現(xiàn)在,您可以使用0o和0O表示八進(jìn)制數(shù)字。通過在數(shù)字前面加上 0 來表示前面的符號(hào)仍然有效。

016 === 0o16; // true016 === 0O16; // true

# Enums枚舉 RFC

此RFC仍在討論中。

添加枚舉將是PHP的重大改進(jìn),因此我非常期待看到此RFC進(jìn)一步發(fā)展。為了讓您快速預(yù)覽它們的外觀,下面是一個(gè)代碼示例:

enum Status {  case Pending;  case Active;  case Archived;
}

這就是它們的用法:

class Post{public function __construct(private Status $status = Status::Pending;
    ) {}public function setStatus(Status $status): void{// …}
}

$post->setStatus(Status::Active);

# 限制$GLOBALS使用 RFC

對(duì)$GLOBALS的使用方式進(jìn)行小的更改將對(duì)所有數(shù)組操作的性能產(chǎn)生重大影響。 Nikita很好地解釋了 RFC 中的問題和解決方案。更改意味著$GLOBALS無法再處理某些邊緣情況。 "不再支持對(duì) $GLOBALS進(jìn)行整體寫入。以下所有操作都會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤"

$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;unset($GLOBALS);

最重要的是,通過引用傳遞$GLOBALS會(huì)生成運(yùn)行時(shí)錯(cuò)誤:

by_ref($GLOBALS); // Run-time error

Nikita分析了Packagist上排名前2000的包裝,僅發(fā)現(xiàn)23個(gè)案件將受到此更改的影響。我們可以得出結(jié)論,此更改(從技術(shù)上來說是重大突破)的影響將很小,這就是內(nèi)部人員決定在PHP 8.1中添加它的原因。

# 棄用將null傳遞給內(nèi)部函數(shù) RFC

更改很簡單:內(nèi)部函數(shù)當(dāng)前接受null表示不可為空的參數(shù),該RFC棄用了該行為。例如,這目前是可能的:

str_contains("string", null);

在PHP 8.1中,這些類型的錯(cuò)誤將引發(fā)棄用警告,在PHP 9中,它們將轉(zhuǎn)換為類型錯(cuò)誤。

到此,關(guān)于“PHP 8.1有什么新特性”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站名稱:PHP8.1有什么新特性
本文網(wǎng)址:http://www.muchs.cn/article16/geeegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、全網(wǎng)營銷推廣、自適應(yīng)網(wǎng)站、網(wǎng)站營銷、商城網(wǎng)站、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化