2024 年日本 PHP 研討會

ParseError

(PHP 7, PHP 8)

簡介

當解析 PHP 程式碼時發生錯誤,例如呼叫 eval() 時,會拋出 ParseError

注意 自 PHP 7.3.0 起,ParseError 繼承自 CompileError。在此之前,它繼承自 Error

類別概要

class ParseError extends CompileError {
/* 繼承的屬性 */
保護 字串 $message = "";
私有 字串 $string = "";
保護 整數 $code;
保護 字串 $file = "";
保護 整數 $line;
私有 陣列 $trace = [];
私有 ?Throwable $previous = null;
/* 繼承方法 */
公開 Error::__construct(字串 $message = "", 整數 $code = 0, ?Throwable $previous = null)
最終 公開 Error::getMessage(): 字串
最終 公開 Error::getCode(): 整數
最終 公開 Error::getFile(): 字串
最終 公開 Error::getLine(): 整數
最終 公開 Error::getTrace(): 陣列
}
新增筆記

使用者貢獻的筆記 2 則筆記

SixPigPigWikiSix
1 年前
語法解析錯誤 (Parse Error) 的優先級應高於致命錯誤 (Fatal Error),語法解析錯誤是所有 PHP 異常中優先級最高的。請參考以下範例
<?php
error_reporting
(E_ALL);
test()
//系統輸出語法解析錯誤
?>
<?php
error_reporting
(E_WARNING);
test()
//系統輸出語法解析錯誤
?>
<?php
error_reporting
(E_ERROR);
test()
//系統輸出語法解析錯誤
?>
<?php
error_reporting
(E_PARSE);
test()
//系統輸出語法解析錯誤
?>
andrian dot test dot job at gmail dot com
5 年前
<?php
/*
* eval() 函數會將其參數作為 PHP 指令來執行
* 因此,參數必須符合 PHP 編碼標準
* 在此範例中,缺少分號
*/

try{

eval(
"echo 'toto' echo 'tata'");

}catch(
ParseError $p){

echo
$p->getMessage();
}

/*
* 如果您執行此程式碼,結果將與上述程式碼的結果不同
* PHP 將輸出標準語法解析錯誤:語法錯誤,....
*

eval("echo 'toto' echo 'tata'");

*/
To Top