首頁 後端開發 php教程 http://www.12306.cn/mormhweb/k 深入理解PHP原理錯誤抑制與內嵌HTML分析

http://www.12306.cn/mormhweb/k 深入理解PHP原理錯誤抑制與內嵌HTML分析

Jul 29, 2016 am 08:45 AM

PHP提供了一個錯誤抑制符'@', 它是透過什麼方式來阻止錯誤輸出呢? 我又該在什麼時候使用它呢?
這是這倆天一些網友提到的共同問題, 今天就索性整體回答下, 備後來人翻閱.
PHP文件內嵌HTML的處理方式
在PHP中, 所有在標籤外的字符, 在詞法分析過程中, 都會翻譯成T_INLINE_HTML token, 在語法分析的時候, 所有的T_INLIE_HTML都會被分配ZEND_ECHO輸出.
也就是說:

複製代碼 代碼如下:


while($con) {
?>
laruence
}
?>


會產生一條OPLINE : T_ECHO, 而操作數是”laruence”;
就結果來說, 上面的代碼, 其實和下面的結果一樣:

複製代碼

複製代碼



複製代碼


複製代碼

複製代碼

複製代碼

代碼如下:


while($con) {
echo "laruence";
}

?>


但有一個要注意的地方是, 對於PHP標籤外的字符, 在詞法分析過程中, 都會以400個字符為單位切分, 比如:

複製代碼 程式碼如下:

if(1) {
?>
laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence
}
?>

上面的程式碼中, 標籤外有531個字元(包含空格回車), 會被分成兩個字條T_INLINE_HTML輸出. 錯誤抑制符我們知道,在PHP中,可以透過錯誤抑制符來靜默錯誤提示, 那麼它是透過什麼方式呢? 在語法分析的過程中, 對於:



複製程式碼

程式碼如下:

@include('file'); ?>

會分別在include語句前後插入兩個字條Opline(操作), 這兩個操作分別做:



複製程式碼


程式碼如下:

1. 儲存目前的error_reporting值, 並設定error_reporting(0); //關掉錯誤輸出

2. 恢復之前儲存的error_reporting值也就是說, 其實上面的程式碼, 和下面的程式碼類似: 複製程式碼 程式碼如下:$old = error_reporting(0); $old = error_reporting(0); $old = error_reporting(0); $old = error_reporting(0); include('file'); error_reporting($old); 另外, 講一句題外話:」什麼時候才應用錯誤抑制呢?”, 我個人建議, 就是如果這條語句出錯了對你影響不大, 你也不關心這個錯誤是什麼, 你也不會安排額外的邏輯來處理這種錯誤, 那麼你可以使用錯誤抑制. 否則, 請你使用額外的邏輯來判斷錯誤. 以上就介紹了http://www.12306.cn/mormhweb/k 深入理解PHP原理之錯誤抑制與內嵌HTML分析,包括了http://www.12306.cn/mormhweb/k方面的內容,希望對PHP教程有興趣的朋友有幫助。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles