Newer
Older
Dries Buytaert
committed
<?php
/**
* @file
* Contains \Drupal\Core\Cache\ApcuBackendFactory.
*/
namespace Drupal\Core\Cache;
Angie Byron
committed
use Drupal\Core\Site\Settings;
Dries Buytaert
committed
class ApcuBackendFactory implements CacheFactoryInterface {
/**
* The site prefix string.
*
* @var string
*/
protected $sitePrefix;
catch
committed
/**
* The cache tags checksum provider.
*
* @var \Drupal\Core\Cache\CacheTagsChecksumInterface
*/
protected $checksumProvider;
Alex Pott
committed
/**
* The APCU backend class to use.
*
* @var string
*/
protected $backendClass;
Dries Buytaert
committed
/**
* Constructs an ApcuBackendFactory object.
*
* @param string $root
* The app root.
* @param string $site_path
* The site path.
catch
committed
* @param \Drupal\Core\Cache\CacheTagsChecksumInterface $checksum_provider
* The cache tags checksum provider.
Dries Buytaert
committed
*/
public function __construct($root, $site_path, CacheTagsChecksumInterface $checksum_provider) {
$this->sitePrefix = Settings::getApcuPrefix('apcu_backend', $root, $site_path);
catch
committed
$this->checksumProvider = $checksum_provider;
Alex Pott
committed
if (version_compare(phpversion('apcu'), '5.0.0', '>=')) {
$this->backendClass = 'Drupal\Core\Cache\ApcuBackend';
}
else {
$this->backendClass = 'Drupal\Core\Cache\Apcu4Backend';
}
Dries Buytaert
committed
}
/**
* Gets ApcuBackend for the specified cache bin.
*
* @param $bin
* The cache bin for which the object is created.
*
* @return \Drupal\Core\Cache\ApcuBackend
* The cache backend object for the specified cache bin.
*/
public function get($bin) {
Alex Pott
committed
return new $this->backendClass($bin, $this->sitePrefix, $this->checksumProvider);