Skip to content

Instantly share code, notes, and snippets.

@non-senses
Created January 30, 2020 19:07
Show Gist options
  • Save non-senses/8e176d6804132b0d8e834c4fbf196b52 to your computer and use it in GitHub Desktop.
Save non-senses/8e176d6804132b0d8e834c4fbf196b52 to your computer and use it in GitHub Desktop.
guard_clauses_02.php
<?php
public function unlock($orderId, $userId)
{
$redis = $this->app['cache'];
if (empty($this->type) || empty($orderId) || !in_array($this->type, $this->availableType)) {
throw new LockException("Missing/Invalid parameters. Can't unlock for type: " . $this->type . " with id: " . $orderId);
}
$result = $redis->hGet(sprintf(self::REDIS_CACHE_TEMPORARY_LOCK, $this->type), $orderId);
if (!empty($result)) {
// lock if it's the same user who try to unlock
$data = json_decode($result, true);
if ($userId == $data['user']['id']) {
$result = $redis->hDel(sprintf(self::REDIS_CACHE_TEMPORARY_LOCK, $this->type), $orderId);
if ($result == true) {
return true;
} else {
throw new LockException("Unlock failed. Please try again");
}
} else {
throw new LockException("Unlock failed. You can't unlock something that isn't yours");
}
} else {
throw new LockException("This order wasn't locked. Can't unlock");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment