网站建设四个阶段的流程,清河做网站哪家便宜,合肥官网建设公司哪家好,wordpress 动画模板PHP 7.3 为 json_encode() 和 json_decode() 函数增加的一个新特性使其更好的处理错误。这个特性「 RFC 」以 23 比 0 的投票结果被一致接受。让我们看一看在 PHP 7.2 及一下版本中是如何处理 JSON 错误的#xff0c;以及 PHP 7.3 中新的改进。背景当前在 PHP7.2 版本中#…PHP 7.3 为 json_encode() 和 json_decode() 函数增加的一个新特性使其更好的处理错误。这个特性「 RFC 」以 23 比 0 的投票结果被一致接受。让我们看一看在 PHP 7.2 及一下版本中是如何处理 JSON 错误的以及 PHP 7.3 中新的改进。背景当前在 PHP7.2 版本中如果要确定 JSON 是否无效则必须使用 json_last_error() 函数来验证: json_decode({); null json_last_error(); 4 json_last_error() JSON_ERROR_NONE false json_last_error_msg() Syntax error举个栗子在 Laravel 中使用 Illuminate\Encryption\Encrypter 类检查以及确保调用 json_encode() 不会导致出错。// 当我们获取到加密的数值时我们会先用 base64_encode 处理// 并且为我们要加密的数值创建用来验证的 MAC 值// 最后我们会将三者组成的数组 JSON 格式化$json json_encode(compact(iv, value, mac));if (json_last_error() ! JSON_ERROR_NONE) {throw new EncryptException(Could not encrypt the data.);}return base64_encode($json);我们至少可以确定 JSON 编码/解码是否有错但与抛出异常相比它有点笨拙它将错误代码和消息整齐的打包在一块。虽然我们必须选择使用它但是在 v7.3 版本中有一个很好的方法让你捕获和处理 JSON 异常——接下来让我们看看我们可以使用的新特性( flag 字面来翻就是标志、旗帜这些但是此处感觉特性比较好才疏学浅请指正)。PHP 7.3 中的抛出错误的特性新的特性选项 JSON_THROW_ON_ERROR 可以使用 try/catch 重写此代码块大约类似于如下内容:use JsonException;try {$json json_encode(compact(iv, value, mac), JSON_THROW_ON_ERROR);return base64_encode($json);} catch (JsonException $e) {throw new EncryptException(Could not encrypt the data., 0, $e);}我想当你收到一些 JSON 数据而不用去深究和 json_last_error() 匹配的标志时这种风格对的 userland 代码特别有用这样 JSON 编码和解码可以更加高效的去处理错误PHP 7.3 中 json_decode 函数增加了一些参数用来处理错误比如如下所示:use JsonException;try {return json_decode($jsonString, $assoc true, $depth 512, JSON_THROW_ON_ERROR);} catch (JsonException $e) {// 处理 JSON 异常}// Or even just let it bubble up.../*** 将 JSON 字符串解码为数组 (Decode a JSON string into an array)** return array* throws JsonException*/function decode($jsonString) {return json_decode($jsonString, $assoc true, $depth 512, JSON_THROW_ON_ERROR);}获取错误代码和错误信息以前你想查看 JSON 的错误代码和错误信息需要使用以下函数// 错误代码json_last_error();// 易于理解的错误信息json_last_error_msg();如果你使用新的「JSON_THROW_ON_ERROR」参数获取错误代码和错误信息的方式如下try {return json_decode($jsonString, $assoc true, $depth 512, JSON_THROW_ON_ERROR);} catch (JsonException $e) {$e-getMessage(); // like json_last_error_msg()$e-getCode(); // like json_last_error()}查看更多 API 详细信息请访问「base Exception 」 JsonException 异常是 Exception 的一个子类。JSON 在 PHP 7.3 中的默认行为当升级到 PHP 7.3 时你将在一天内完成代码的向后兼容并按照预期的结果继续工作。PHP 的默认函数 json_encode|decode() 的行为没有改变 在抛出的错误中 RFC 增加了一个新的选项和异常类。了解更多本文中的所有译文仅用于学习和交流目的转载请务必注明文章译者、出处、和本文链接我们的翻译工作遵照 CC 协议如果我们的工作有侵犯到您的权益请及时联系我们。