1
0
mirror of synced 2025-01-10 11:07:10 +03:00
doctrine2/lib/Doctrine/ORM/Cache/CacheConfiguration.php

192 lines
5.0 KiB
PHP
Raw Normal View History

2013-10-03 21:55:55 +04:00
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace Doctrine\ORM\Cache;
use Doctrine\ORM\EntityManagerInterface;
2013-10-03 21:55:55 +04:00
use Doctrine\ORM\ORMException;
use Doctrine\ORM\Cache\Logging\CacheLogger;
/**
* Configuration container for second-level cache.
*
* @since 2.5
* @author Fabio B. Silva <fabio.bat.silva@gmail.com>
*/
class CacheConfiguration
{
/**
2013-10-17 20:11:56 +04:00
* @var \Doctrine\ORM\Cache\CacheFactory|null
2013-10-03 21:55:55 +04:00
*/
private $cacheFactory;
/**
2013-10-17 20:11:56 +04:00
* @var \Doctrine\ORM\Cache\RegionsConfiguration|null
2013-10-03 21:55:55 +04:00
*/
private $regionsConfig;
/**
2013-10-17 20:11:56 +04:00
* @var \Doctrine\ORM\Cache\Logging\CacheLogger|null
2013-10-03 21:55:55 +04:00
*/
private $cacheLogger;
/**
2013-10-17 20:11:56 +04:00
* @var \Doctrine\ORM\Cache\QueryCacheValidator|null
2013-10-03 21:55:55 +04:00
*/
private $queryValidator;
/**
* @var callable|null
*/
private $cacheInstantiator;
2013-10-03 21:55:55 +04:00
/**
* @var string
*/
private $cacheClassName = 'Doctrine\ORM\Cache\DefaultCache';
/**
* @return \Doctrine\ORM\Cache\CacheFactory|null
*/
public function getCacheFactory()
{
return $this->cacheFactory;
}
/**
* @param \Doctrine\ORM\Cache\CacheFactory $factory
*
* @return void
*/
public function setCacheFactory(CacheFactory $factory)
{
$this->cacheFactory = $factory;
}
/**
* @return \Doctrine\ORM\Cache\Logging\CacheLogger|null
*/
public function getCacheLogger()
{
return $this->cacheLogger;
}
/**
* @param \Doctrine\ORM\Cache\Logging\CacheLogger $logger
*/
public function setCacheLogger(CacheLogger $logger)
{
$this->cacheLogger = $logger;
}
/**
* @return \Doctrine\ORM\Cache\QueryCacheValidator
*/
public function getRegionsConfiguration()
{
2013-10-08 02:53:32 +04:00
if ($this->regionsConfig === null) {
2013-10-03 21:55:55 +04:00
$this->regionsConfig = new RegionsConfiguration();
}
return $this->regionsConfig;
}
/**
* @param \Doctrine\ORM\Cache\RegionsConfiguration $regionsConfig
*/
public function setRegionsConfiguration(RegionsConfiguration $regionsConfig)
{
$this->regionsConfig = $regionsConfig;
}
/**
* @return \Doctrine\ORM\Cache\QueryCacheValidator
*/
public function getQueryValidator()
{
2013-10-08 02:53:32 +04:00
if ($this->queryValidator === null) {
2013-10-03 21:55:55 +04:00
$this->queryValidator = new TimestampQueryCacheValidator();
}
return $this->queryValidator;
}
/**
* @param \Doctrine\ORM\Cache\QueryCacheValidator $validator
*/
public function setQueryValidator(QueryCacheValidator $validator)
{
$this->queryValidator = $validator;
}
/**
* @param callable $instantiator responsible of retrieving an {@see \Doctrine\ORM\Cache} instance given
* a {@see \Doctrine\ORM\EntityManagerInterface} instance
*
* @throws ORMException if the given instantiator is not a valid callable
*/
public function setCacheInstantiator($instantiator)
{
if ( ! is_callable($instantiator)) {
throw ORMException::invalidSecondLevelCacheInstantiator($instantiator);
}
$this->cacheInstantiator = $instantiator;
}
/**
* @return callable that
*/
public function getCacheInstantiator()
{
if ( ! $this->cacheInstantiator) {
$this->cacheInstantiator = function (EntityManagerInterface $entityManager) {
return new DefaultCache($entityManager);
};
}
return $this->cacheInstantiator;
}
2013-10-03 21:55:55 +04:00
/**
* @param string $className
*
2013-10-08 02:53:32 +04:00
* @throws \Doctrine\ORM\ORMException If is not a \Doctrine\ORM\Cache
2013-10-03 21:55:55 +04:00
*/
public function setCacheClassName($className)
{
$reflectionClass = new \ReflectionClass($className);
if ( ! $reflectionClass->implementsInterface('Doctrine\ORM\Cache')) {
throw ORMException::invalidSecondLevelCache($className);
}
$this->cacheClassName = $className;
}
/**
* @return string A \Doctrine\ORM\Cache class name
*/
public function getCacheClassName()
{
return $this->cacheClassName;
}
}