* @copyright 2021 DIGITAL RETAIL TECHNOLOGIES SL * @license https://opensource.org/licenses/MIT The MIT License * * Don't forget to prefix your containers with your own identifier * to avoid any conflicts with others containers. */ class RetailcrmCachedSettingExtractor extends RetailcrmAbstractDataBuilder { /** @var string */ private $cachedKey; /** @var string */ private $configKey; /** @var bool */ private $fromCache; /** * RetailcrmCachedValueExtractor constructor. */ public function __construct() { parent::__construct(); $this->reset(); } /** * @param string $cachedKey * * @return $this */ public function setCachedKey($cachedKey) { $this->cachedKey = $cachedKey; return $this; } /** * @param string $configKey * * @return $this */ public function setConfigKey($configKey) { $this->configKey = $configKey; return $this; } /** * @param string $key * * @return $this */ public function setCachedAndConfigKey($key) { $this->setCachedKey($key); $this->setConfigKey($key); return $this; } public function build() { /** @var Cache $cache */ $cache = Cache::getInstance(); $this->fromCache = false; if ($cache->exists($this->cachedKey)) { $this->data = $cache->get($this->cachedKey); $this->fromCache = true; } if (empty($this->data)) { $this->data = Configuration::get($this->configKey); $this->fromCache = false; } } /** * Reset inner state * * @return $this */ public function reset() { parent::reset(); $this->cachedKey = ''; $this->configKey = ''; $this->fromCache = false; return $this; } /** * @return bool */ public function isFromCache() { return $this->fromCache; } }