From 539afc6d630eef5791f06db12c33d4074fb0df47 Mon Sep 17 00:00:00 2001 From: iclukas Date: Tue, 31 May 2022 13:16:07 +0200 Subject: [PATCH] implemented Item::extend(), fixed some PHPDoc inconsistencies --- src/Stash/Item.php | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/Stash/Item.php b/src/Stash/Item.php index 95dde24b..477d5fc0 100644 --- a/src/Stash/Item.php +++ b/src/Stash/Item.php @@ -283,7 +283,7 @@ public function setInvalidationMethod($invalidation = Invalidation::PRECOMPUTE, /** * {@inheritdoc} * - * @param string $invalidation + * @param int $invalidation * @param mixed $arg * @param mixed $arg2 * @return mixed|Null @@ -357,7 +357,7 @@ public function isMiss() * {@inheritdoc} * * @param int $ttl time to live - * @return object data with new expiration date + * @return bool */ public function lock($ttl = null) { @@ -384,7 +384,7 @@ public function lock($ttl = null) * {@inheritdoc} * * @param mixed $value - * @return \Stash\Item + * @return \Stash\Item|false */ public function set($value) { @@ -523,8 +523,8 @@ private function executeSet($data, $time) /** * {@inheritdoc} * - * @param int $ttl time to live - * @return bool + * @param int|\DateInterval $ttl time to live + * @return \Stash\Item|false */ public function extend($ttl = null) { @@ -532,7 +532,25 @@ public function extend($ttl = null) return false; } - return $this->set($this->get(), $ttl); + $expiration = $this->getExpiration(); + + if (is_numeric($ttl)) { + $dateInterval = \DateInterval::createFromDateString(abs($ttl) . ' seconds'); + if ($ttl > 0) { + $expiration->add($dateInterval); + } else { + $expiration->sub($dateInterval); + } + } elseif ($ttl instanceof \DateInterval) { + $expiration->add($ttl); + } else { + $expiration = null; + } + + if ($this->executeSet($this->get(), $expiration)) { + return $this; + } + return false; } /** @@ -574,7 +592,7 @@ protected function logException($message, $exception) $message, array( 'exception' => $exception, - 'key' => $this->keyString + 'key' => $this->keyString ) ); @@ -715,7 +733,7 @@ protected function validateRecord($validation, &$record) /** * {@inheritdoc} * - * @return \DateTime + * @return \DateTime|false */ public function getCreation() { @@ -733,7 +751,7 @@ public function getCreation() /** * {@inheritdoc} * - * @return int date timestamp + * @return \DateTime date timestamp */ public function getExpiration() {