isValidEntryIdentifier($entryIdentifier)) { throw new \InvalidArgumentException( '"' . $entryIdentifier . '" is not a valid cache entry identifier.', 1233058264 ); } foreach ($tags as $tag) { if (!$this->isValidTag($tag)) { throw new \InvalidArgumentException('"' . $tag . '" is not a valid tag for a cache entry.', 1233058269); } } foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/cache/frontend/class.t3lib_cache_frontend_variablefrontend.php']['set'] ?? [] as $_funcRef) { $params = [ 'entryIdentifier' => &$entryIdentifier, 'variable' => &$data, 'tags' => &$tags, 'lifetime' => &$lifetime, ]; GeneralUtility::callUserFunction($_funcRef, $params, $this); } if (!$this->backend instanceof TransientBackendInterface) { // No DI/GeneralUtility::makeInstance usage, since caching needs to operate prior to DI container setup. $deserializer = new AuthenticatedMessageDeserializer(new HashService(), new DeserializationService()); $data = $deserializer->serialize($data, VariableFrontend::class); } $this->backend->set($entryIdentifier, $data, $tags, $lifetime); } /** * Finds and returns a variable value from the cache. */ public function get(string $entryIdentifier): mixed { if (!$this->isValidEntryIdentifier($entryIdentifier)) { throw new \InvalidArgumentException( '"' . $entryIdentifier . '" is not a valid cache entry identifier.', 1233058294 ); } $rawResult = $this->backend->get($entryIdentifier); if ($rawResult === false) { return false; } if ($this->backend instanceof TransientBackendInterface) { return $rawResult; } try { // No DI/GeneralUtility::makeInstance usage, since caching needs to operate prior to DI container setup. $deserializer = new AuthenticatedMessageDeserializer(new HashService(), new DeserializationService()); return $deserializer->deserialize($rawResult, VariableFrontend::class); } catch (DeserializerException) { return false; } } }