From e4d51dc555a90ba727e4314268cfb394d9a04be5 Mon Sep 17 00:00:00 2001 From: Kyle Essex Date: Wed, 9 Feb 2022 14:20:46 +0000 Subject: [PATCH] Add missing methods --- src/AbstractCache.php | 47 ++++++++++++++++++--- src/Exceptions/InvalidArgumentException.php | 10 +++++ src/FileCache.php | 1 + 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/AbstractCache.php b/src/AbstractCache.php index df45cf6..222f610 100644 --- a/src/AbstractCache.php +++ b/src/AbstractCache.php @@ -9,6 +9,7 @@ /** * Class AbstractCache + * * @package MrEssex\FileCache */ abstract class AbstractCache implements CacheInterface @@ -64,11 +65,11 @@ protected function _validateKey($key): bool } /** - * @param int|null|string $ttl + * @param int|null|DateTime|DateInterval|string $ttl * * @return int */ - protected function _expirationToTimestamp(?int $ttl): int + protected function _expirationToTimestamp($ttl): int { if($ttl instanceof DateInterval) { @@ -105,7 +106,19 @@ protected function _expirationToTimestamp(?int $ttl): int */ public function getMultiple($keys, $default = null) { - // TODO: Implement getMultiple() method. + if(!is_array($keys) && !$keys instanceof \Traversable) + { + throw InvalidArgumentException::invalidTraversableArgument(); + } + + $values = []; + + foreach($keys as $key) + { + $values[$key] = $this->get($key, $default); + } + + return $values; } /** @@ -124,7 +137,19 @@ public function getMultiple($keys, $default = null) */ public function setMultiple($values, $ttl = null) { - // TODO: Implement setMultiple() method. + if(!is_array($values) && !$values instanceof \Traversable) + { + throw InvalidArgumentException::invalidTraversableArgument(); + } + + $success = true; + + foreach($values as $key => $value) + { + $success = $this->set($key, $value) && $success; + } + + return $success; } /** @@ -140,6 +165,18 @@ public function setMultiple($values, $ttl = null) */ public function deleteMultiple($keys) { - // TODO: Implement deleteMultiple() method. + if(!is_array($keys) && !$keys instanceof \Traversable) + { + throw InvalidArgumentException::invalidTraversableArgument(); + } + + $success = true; + + foreach($keys as $key) + { + $success = $this->delete($key) && $success; + } + + return $success; } } diff --git a/src/Exceptions/InvalidArgumentException.php b/src/Exceptions/InvalidArgumentException.php index 4284569..89fb9fe 100644 --- a/src/Exceptions/InvalidArgumentException.php +++ b/src/Exceptions/InvalidArgumentException.php @@ -83,4 +83,14 @@ public static function failedToCache(): InvalidArgumentException ); } + /** + * @return InvalidArgumentException + */ + public static function invalidTraversableArgument(): InvalidArgumentException + { + return new self( + "Argument 1 must be an array or a Traversable", 500 + ); + } + } diff --git a/src/FileCache.php b/src/FileCache.php index eab6ce4..2f66911 100644 --- a/src/FileCache.php +++ b/src/FileCache.php @@ -9,6 +9,7 @@ /** * Class FileCache + * * @package MrEssex\FileCache */ class FileCache extends AbstractCache