yaml_parse_file函式的正確使用方式

Junmo發表於2019-02-16

原文連結: https://liangjunmo.com/2018/1…

yaml_parse_file 函式用來解析一個 YAML 格式的檔案,根據 PHP 官方文件中對於此函式返回值的描述:

Returns the value encoded in input in appropriate PHP type 或者在失敗時返回 FALSE. If pos is -1 an array will be returned with one entry for each document found in the stream.

可知,函式在失敗時會返回 false

但是我們不能僅僅依靠這個函式的返回值來驗證解析是否成功,因為,某些情況下,例如當要解析的檔案是空檔案的時候,這個函式是會直接報錯的:

PHP Warning: yaml_parse_file(): end of stream reached without finding document 0 in php shell code on line 1

文件並沒有說這個函式會報錯。

我的解決方法是解析 YAML 檔案之前使用 set_error_handler 函式接管錯誤處理:

<?php
$has_error = false;
set_error_handler(function ($errnum, $errstr) use ($has_error) {
    echo $errstr;
    $has_error = true;
});
yaml_parse_file(`empty_content.yml`);
if ($has_error) {
    return;
}
restore_error_handler();

相關文章