本文介绍一种简洁高效的方式,通过空合并操作符(??)消除 if-else 结构中重复的 else 分支代码,提升可读性与可维护性。
在 PHP 开发中,重复代码不仅增加维护成本,还容易引发逻辑不一致问题。观察原始代码,$this->getRequest($value) 被两次调用——分别位于内层 else 和外层 else 中,这正是典型的冗余模式:
if (!empty($data)) {
$getData = $this->getData($data);
if (!empty($getData)) {
$response = $getData->name;
} else {
$response = $this->getRequest($value); // 重复点 #1
}
} else {
$response = $this->getRequest($value); // 重复点 #2
}
return $response;✅ 优化思路:将 $response 的赋值逻辑解耦——先尝试从 $data 获取有效响应,若未成功(即 $response 未定义或为 null/false/'' 等 falsy 值),再统一回退到 getRequest()。利用 PHP 7+ 的空合并操作符 ??,可安全地判断变量是否“已设置且不为 null”,从而实现一次兜底赋值:
if (!empty($data)) {
$getData = $this->getData($data);
if (!empty($getData)) {
$response = $getData->name;
}
}
// 若 $response 未定义或为 null,则执行 getRequest()
$response = $response ?? $this->getRequest($value);
return $response;? 关键说明:
? 进阶建议:
$response = !empty($data) && !empty($getData = $this->getData($data))
? $getData->name
: $thi
s->getRequest($value);总之,善用 ?? 是 PHP 中消除重复回退逻辑的惯用实践,既精简代码,又保持语义清晰。