You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP布尔场景优化条件代码:如何省略else语句实现简洁写法

优化方案

当然可以简化这段代码,核心思路是提取重复逻辑,利用布尔值直接复用判断结果:

基础优化版(无需修改原有类)

$isApproved = $command->approve();
$schedule->setApproval($isApproved);
$schedule->setApprovalAt($isApproved ? new \DateTime() : null);

优势:

  • 完全省略了else子句,代码结构更扁平
  • 避免重复调用setApproval,把布尔判断结果存入变量后直接复用
  • 逻辑清晰,一眼就能看出两个setter的依赖关系

如果你的PHP版本在7.0以上,且确认$command->approve()方法无副作用(每次调用返回值一致),也可以省略中间变量,直接内联调用:

$schedule->setApproval($command->approve());
$schedule->setApprovalAt($command->approve() ? new \DateTime() : null);

面向对象封装版(推荐,需修改Schedule类)

如果有权限修改Schedule类的代码,可以封装一个统一的方法来处理审批状态设置,进一步简化调用逻辑:

// 在Schedule类中新增方法
public function setApprovalStatus(bool $approved): void
{
    $this->setApproval($approved);
    $this->setApprovalAt($approved ? new \DateTime() : null);
}

之后调用时只需要一行代码:

$schedule->setApprovalStatus($command->approve());

优势:

  • 把审批状态的关联逻辑封装在Schedule类内部,符合单一职责原则
  • 外部调用代码极度简洁,后续修改审批逻辑时只需修改类内部方法,无需改动所有调用处

内容的提问来源于stack exchange,提问作者Filip Stojavonic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:45:53