You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
731 B
39 lines
731 B
<?php
|
|
|
|
namespace WeWork\ApiCache;
|
|
|
|
use WeWork\Traits\CacheTrait;
|
|
|
|
abstract class AbstractApiCache
|
|
{
|
|
use CacheTrait;
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
abstract protected function getCacheKey(): string;
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
abstract protected function getFromServer();
|
|
|
|
/**
|
|
* @param bool $refresh
|
|
* @return mixed
|
|
* @throws \Psr\SimpleCache\InvalidArgumentException
|
|
*/
|
|
public function get(bool $refresh = false)
|
|
{
|
|
$key = $this->getCacheKey();
|
|
|
|
$value = $this->cache->get($key);
|
|
|
|
if ($refresh || !$value) {
|
|
$value = $this->getFromServer();
|
|
$this->cache->set($key, $value, 7100);
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
}
|
|
|