for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* Created by PhpStorm.
* User: michal
* Date: 10/10/2017
* Time: 14:27
*/
namespace BlueCache;
use \BlueCache\Storage\File;
use \BlueCache\Storage\StorageInterface;
trait Common
{
* @var StorageInterface
protected $storage;
* @var array
protected $config = [
'storage_class' => File::class,
'storage_directory' => './var/cache',
];
* check that cache directory exist and create it if not
*
* @param array $config
* @throws \BlueCache\CacheException
public function __construct(array $config = [])
$this->config = \array_merge($this->config, $config);
$this->registerStorage();
}
* @return $this
protected function registerStorage()
switch (true) {
case $this->config['storage_class'] instanceof StorageInterface:
$this->storage = $this->config['storage_class'];
break;
case $this->config['storage_class'] === File::class:
case \is_string($this->config['storage_class']):
$this->factoryStorage();
default:
throw new CacheException('Incorrect storage type: ' . \get_class($this->storage));
return $this;
protected function factoryStorage()
$config = ['cache_path' => $this->config['storage_directory']];
$this->storage = new $this->config['storage_class']($config);
if (!($this->storage instanceof StorageInterface)) {
throw new CacheException('Incorrect storage type: ' . $this->config['storage_class']);