欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

為什么PHP允許從__toString拋出異常-創(chuàng)新互聯(lián)

介紹

創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)望花,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

目前禁止從__toString()拋出異常,并將導(dǎo)致致命錯(cuò)誤。這就使得調(diào)用任意代碼變得很危險(xiǎn),并使其成為一個(gè)有問題的通用API。此RFC旨在取消此限制。

當(dāng)前行為的基本原理是,在整個(gè)引擎和標(biāo)準(zhǔn)庫的許多地方都執(zhí)行了字符串轉(zhuǎn)換,并不是所有地方都準(zhǔn)備“正確地”處理異常,即盡可能早地處理異常。

從技術(shù)角度來看,這種限制最終是無效的,因?yàn)樽址D(zhuǎn)換期間的異常仍然可以由將可恢復(fù)錯(cuò)誤轉(zhuǎn)換為異常的錯(cuò)誤處理程序觸發(fā):

set_error_handler(function() {
    throw new Exception();
});
 
try {
    (string) new stdClass;
} catch (Exception $e) {
    echo "(string) threw an exception...\n";
}

事實(shí)上,Symfony利用這個(gè)漏洞來繞過當(dāng)前的限制。不幸的是,這依賴于$errcontext參數(shù),它在PHP 8中消失了.

盡管如此,在我們對(duì)該代碼庫中的字符串轉(zhuǎn)換進(jìn)行了全面審核之前,過去關(guān)于該主題的討論一直沒有放松這種限制。這已在附加的實(shí)現(xiàn)請(qǐng)求中完成。

建議

允許從__toString()拋出異常,它的行為與往常一樣。不再觸發(fā)致命錯(cuò)誤。

另外,將“不能轉(zhuǎn)換為字符串”和“__toString()必須返回一個(gè)字符串值”可恢復(fù)的致命錯(cuò)誤轉(zhuǎn)換為正確的錯(cuò)誤異常,這與PHP 7中建立的錯(cuò)誤策略一致。

擴(kuò)展準(zhǔn)則

想要優(yōu)雅地處理來自字符串轉(zhuǎn)換的異常的擴(kuò)展作者,應(yīng)該考慮以下準(zhǔn)則:

● 如果zval_get_string()、convert_to_string()和friends生成一個(gè)異常,它們?nèi)匀粫?huì)生成一個(gè)字符串。這個(gè)字符串被保證是暫存的。這意味著沒有必要釋放它,但可以這樣做。在上下文中,您可以選擇更方便的選項(xiàng)。

● 如果從對(duì)象到字符串的轉(zhuǎn)換失敗,則字符串轉(zhuǎn)換的結(jié)果將為空字符串,如果將數(shù)組轉(zhuǎn)換為字符串,并且錯(cuò)誤處理程序?qū)⒔Y(jié)果通知提升為異常,則為“Array”。(這種行為和以前一樣。)

● 通常情況下,使用通常的if (EG(exception))檢查來檢查是否拋出了異常就足夠了:

zend_string *str = zval_get_string(val);
if (EG(exception)) {
    // Possibly free other resources here.
    return;
}

除此之外,還提供了一些幫助api,將轉(zhuǎn)換建模為容易出錯(cuò)的操作:

// Like zval_get_string() but returns NULL on conversion failure.
zend_string *str = zval_try_get_string(val);
if (!str) {
    // Possibly free other resources here.
    return;
}
// Main code.
zend_string_release(str);
 
 
// Like zval_get_tmp_string() but returns NULL on conversion failure.
zend_string *tmp, *str = zval_try_get_tmp_string(val, &tmp);
if (!str) {
    // Possibly free other resources here.
    return;
}
// Main code.
zend_tmp_string_release(tmp);
 
 
// Like convert_to_string() but returns a boolean indicating conversion success/failure.
if (!try_convert_to_string(val)) {
    // Possibly free other resources here.
    return;
}
// Main code.

如果轉(zhuǎn)換失敗,try_convert_to_string()將不會(huì)修改原始值。因此,使用它比使用convert_to_string()和異常檢查更安全。

雖然檢查每一個(gè)字符串轉(zhuǎn)換肯定會(huì)使您處于安全的一方,但忽略這些檢查通常只會(huì)導(dǎo)致一些不必要的計(jì)算和可能的冗余警告。您應(yīng)該注意的主要事情是修改持久結(jié)構(gòu)(如數(shù)據(jù)庫)的操作。

不向后兼容的變更

從可恢復(fù)的致命錯(cuò)誤到錯(cuò)誤異常的轉(zhuǎn)換在技術(shù)上是BC中斷的。

以上就是PHP 7.4允許從 __toString() 拋出異常的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司其它相關(guān)文章!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享標(biāo)題:為什么PHP允許從__toString拋出異常-創(chuàng)新互聯(lián)
地址分享:http://aaarwkj.com/article38/codspp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站建設(shè)商城網(wǎng)站、網(wǎng)站策劃網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎ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)化
在线免费观看视频97| 国产av一区二区三区| 国产极品嫩模在线观看91| 欧美日韩午夜久久免费| 日本少妇入口一区二区| 久久久久久亚洲精品人妻| 欧美日在线观看加勒比| 国产毛毛片一区二区三区| 日韩一区二区偷拍视频| 日本国产一区二区在线观看| 大神厕所偷拍美女尿尿| 日韩电影在线一本二本三本| 天天操天天日天天干夜夜情欢| 久久精品国产亚洲av麻豆花絮| 一本色道久久88综合日韩| 日韩国产欧美亚洲一区不卡| 在线视频网友自拍偷拍| 免费女同一区二区三区| 久久久精品国产亚洲av网黑人| 欧美日韩精品激情一区二区| 日本一区二区精美视频| 在线成人影院中文字幕| 成人精品国产亚洲av| 国产精品一区2区3区| 欧美一区二区黑人巨大| 亚洲国产精品一区一区| 日本黄色免费在线观看网站| 精品蜜桃臀91人少妇| 在线观看永久免费黄色| 天天操天天夜夜操夜夜| 日韩av亚洲一区二区三区| 青青草国产精品一区二区| 亚洲欧美综合伊人看片综合| 国产精品亚洲精品久久| 国产91美女黄色在线观看| 日韩二区三区精品视频| 青青草青青草在线观看视频 | 永久黄区观看在线网址| 性知音国产精品粉色视频| 欧美一区二区三区顶级黄片| 国产精品一区二在线观看|