File "WordpressTransientContainer.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/flexible-shipping/vendor_prefixed/wpdesk/wp-persistence/src/Adapter/WordPress/WordpressTransientContainer.php
File size: 1.77 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace FSVendor\WPDesk\Persistence\Adapter\WordPress;
use FSVendor\WPDesk\Persistence\ElementNotExistsException;
use FSVendor\WPDesk\Persistence\PersistentContainer;
/**
* Can store data using WordPress transients.
* Warning: stored false is considered unset.
*
* @package WPDesk\Persistence\Wordpress
*/
final class WordpressTransientContainer implements PersistentContainer
{
/** @var int */
private $expiration;
/** @var string */
private $namespace;
/**
* @param string $namespace Namespace so transients in different containers would not conflict.
* @param float|int $expiration Expire transient after xx seconds.
*/
public function __construct($namespace = '', $expiration = \DAY_IN_SECONDS)
{
$this->expiration = (int) $expiration;
$this->namespace = $namespace;
}
public function set($id, $value)
{
set_transient($this->prepare_key_name($id), $value, $this->expiration);
}
/**
* Warning: stored false is considered unset.
*
* @param string $id
*
* @return bool
*/
public function has($id)
{
return get_transient($this->prepare_key_name($id)) !== \false;
}
public function delete($id)
{
delete_transient($this->prepare_key_name($id));
}
/**
* Prepare transient name for key.
*
* @param string $key Key.
*
* @return string
*/
private function prepare_key_name($key)
{
return sanitize_key($this->namespace . $key);
}
public function get($id)
{
$value = get_transient($this->prepare_key_name($id));
if (\false === $value) {
throw new ElementNotExistsException(sprintf('Element %s not exists!', $id));
}
return $value;
}
}