@sprashivatel

Как проверить — изменился ли объект?

public static function getUser()
{
    if (isset($_SESSION['token'])) {
        [$id, $token] = explode(':', $_SESSION['token'], 2);
        $user = self::findOneById($id);
        if ($user and $user->token == $token) {

        if ($user->hp < $user->hp_max) { // условие на изменение
            $up = $user->hp + (time() - $user->hp_up) * $user->hp_reg;
            $user->hp = $up >= $user->hp_max ? $user->hp_max : $up;
            $user->hp_up = time();
        }

        if ($user->exp >= $user->exp_max) { // условие на изменение
            $user->lvl++;
            $user->exp -= $user->exp_max;
            $user->exp_max = (int)($user->exp_max * 1.25);
            $user->points += 5;
        }
        $user->save(); // тут косяк: нафига каждый раз обновлять юзера, если условия не сработали?
        return $user;
        }
        unset($_SESSION['token']);
    }
    return null;
}


Можно ли проверить: было ли изменение $user в условиях на изменение и туда save()?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
добавить объекту свойство-флаг/статус private $updated = false и изменять его значение на true после обновления, сбрасывать на false при сохранении.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы