我将 PHP 7.4 用于 laravel 应用程序,并且经常遇到此异常。
ErrorException (E_DEPRECATED)
Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`
触发此异常的代码是:
foreach ($allLanguages as $languageKey) {
$original[$languageKey] =
isset($values[$languageKey])
? $values[$languageKey]
: isset($filesContent[$fileName][$languageKey][$key]) ? $filesContent[$fileName][$languageKey][$key] : '';
}
任何人都可以帮助我解决这个问题吗?
发现这是由于 PHP 中的某些升级导致的 E_DEPRECATED 错误,但是有没有办法 通过将弃用的代码转换为最新的来解决此异常?
原文由 humbleiam 发布,翻译遵循 CC BY-SA 4.0 许可协议
已对 php 进行此更改以消除决策树中的歧义,以便有一个明确的条件执行顺序。
弃用警告在此处复制:
代码:
输出:
\(original[\)languageKey] = \(values[\)languageKey] ?? \(filesContent[\)fileName][\(languageKey][\)key] ?? “;
\(original[\)languageKey] = \(filesContent[\)fileName][\(languageKey][\)key] ?? \(values[\)languageKey] ?? “;
”`
Ps IIRC,php手册基于代码清晰性建议不要使用像这样的嵌套三元/条件。我不介意这种情况,我喜欢避免代码膨胀,但其他开发人员可能会采取更纯粹的立场。