<?php
namespace WPIDE\App\Services\Transient;
use WPIDE\App\Services\Service;
class Transient implements Service
{
protected $prefix;
public function init(array $config = [])
{
$this->prefix = !empty($config['prefix']) ? $config['prefix'] : '';
}
public function set($key, $val, $expiration = YEAR_IN_SECONDS): bool
{
return set_transient( $this->prefix.$key, $val, $expiration );
}
public function get($key, $default = null) {
$value = get_transient( $this->prefix.$key );
if($value === false) {
return $default;
}
return $value;
}
public function delete($key): bool
{
return delete_transient( $this->prefix.$key );
}
public function exists($key): bool
{
return $this->get( $key ) !== false;
}
public function result($key, callable $callback, $expiration = YEAR_IN_SECONDS) {
$cached = $this->get($key);
if($cached === false || !empty($_GET['nocache'])) {
$cached = $callback();
$this->set($key, $cached, $expiration);
}
return $cached;
}
}