cache = $cache; $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class); } /** * Add notification in cache * * @param string $notificationType * @param string $customerId * @return void */ public function add($notificationType, $customerId) { $this->cache->save( $this->serializer->serialize([ 'customer_id' => $customerId, 'notification_type' => $notificationType ]), $this->getCacheKey($notificationType, $customerId) ); } /** * Check whether notification is exists in cache * * @param string $notificationType * @param string $customerId * @return bool */ public function isExists($notificationType, $customerId) { return $this->cache->test($this->getCacheKey($notificationType, $customerId)); } /** * Remove notification from cache * * @param string $notificationType * @param string $customerId * @return void */ public function remove($notificationType, $customerId) { $this->cache->remove($this->getCacheKey($notificationType, $customerId)); } /** * Retrieve cache key * * @param string $notificationType * @param string $customerId * @return string */ private function getCacheKey($notificationType, $customerId) { return 'notification_' . $notificationType . '_' . $customerId; } }