@QNA-1976

Какую проверку лучше использовать?

В БД при выполнении миссии жёстко задано exp_mission = exp_mission + 10
Сейчас проверяю так:
if ($this->mission->exp_mission == 100) {
    throw new DomainException('Вы уже выполнили эту миссию полностью');
}
// тут запрос вида ... update missions set exp_mission = exp_mission + 10 where id = ? and id_mission = ? limit 1 ...

А может быть надо так?
if ($this->mission->exp_mission >= 100) {
    if ($this->mission->exp_mission > 100) {
        // тут запрос вида ... update missions set exp_mission = 100 where id = ? and id_mission = ? limit 1 ...
    }
    throw new DomainException('Вы уже выполнили эту миссию полностью');
}
// тут запрос вида ... update missions set exp_mission = exp_mission + 10 where id = ? and id_mission = ? limit 1 ...

Страхуем exp_mission = exp_mission + 10 или не нужно?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
class Controller 
{
  private $repo;

  pulic function __construct(MissionRepository $repo) 
  {
    $this->repo = $repo;
  }

  pulic function excuteMission($id)
  {
    $mission = $this->repo->find($id);
    $mission->next();
    $mission->save();
  }
}

class Mission
{
  private $progress;

  public function next(): void
  {
    $progress = $this->progress + 10;

    if($progress > 100) {
      throw new DomainExeption('Миссия не может быть выполнена.')
    }
    if($progress = 100) {
      throw new DomainExeption('Миссия уже выполнена.')
    }
  }
}

А вообще используйте тесты и вы сами поймёте что нужно, что не нужно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽