public function handleSignal(Elevator $elevator, $signal) { if ($signal === Elevator::STATE_DOOR_OPEN) { if ($elevator->isDoorOpen() || $elevator->isStanding()) { $state = Elevator::STATE_DOOR_OPEN; } else { throw new Exception("Elevator is on it's way. Can not open door right now, sorry!"); } } else { $state = $this->delegate($elevator, $signal); } return $state; }
public function handleSignal(Elevator $elevator, $signal) { if ($signal === Elevator::STATE_DOOR_CLOSE) { if ($elevator->isDoorOpen()) { $state = Elevator::STATE_STANDING; } else { $state = NULL; } } else { $state = $this->delegate($elevator, $signal); } return $state; }
public function handleSignal(Elevator $elevator, $signal) { if ($signal === Elevator::STATE_ALARM) { if ($elevator->isDoorOpen()) { throw new Exception("Elevator has door open, why should you push an alarm button?"); } else { $state = Elevator::STATE_ALARM; } } else { $state = $this->delegate($elevator, $signal); } return $state; }