Cache Resource for Zend Framework
Hello. I want to say right away that the article is designed for those who are already familiar with this framework. In new versions of the Zend Framework, the concept of initializing application components through resource plugins has been invented. There is a sufficient number of them in the standard delivery, but I have not found one. That is the cache. After wandering around the Internet and not finding analogues, I decided to write my own. And so, let's get started.
We will store custom resources in the library / app / application / resource folder. We put the Cache.php file with the source code connected there:
Now you can initialize the cache using the application config:
# cache
resources.cache.frontend.adapter = core
resources.cache.frontend.params.lifetime = 7200
resources.cache.frontend.params.automatic_serialization = true
resources.cache.backend.adapter = file
resources.cache.backend.params.lifetime = 7200
resources.cache.backend.params.cache_dir = APPLICATION_PATH "/../trash/cache"
resources.cache.isDefaultMetadataCache = true
resources.cache.isDefaultTranslateCache = true
resources.cache. isDefaultLocaleCache = true
resources.cache.registry_key = cache We
also need to add the following line to the config for custom resources to work:
# custom resources
pluginPaths.App_Application_Resource_ = App / Application / Resource Have a nice
day, I hope I managed to interest you if you read it up here =)
We will store custom resources in the library / app / application / resource folder. We put the Cache.php file with the source code connected there:
<?php
class App_Application_Resource_Cache extends Zend_Application_Resource_ResourceAbstract
{
/**
* Default registry key
*/
const DEFAULT_REGISTRY_KEY = 'App_Cache';
/**
* Cache instance
*
* @var Zend_Cache
*/
protected $_cache = null;
/**
* Inititalize cache resource
*
* @return Zend_Cache
*/
public function init ()
{
return $this->getCache();
}
/**
* Return cache instance
*
* @return Zend_Cache
*/
public function getCache ()
{
if (null === $this->_cache) {
$options = $this->getOptions();
/// create cache instance
$this->_cache = Zend_Cache::factory(
$options['frontend']['adapter'],
$options['backend']['adapter'],
$options['frontend']['params'],
$options['backend']['params']
);
/// use as default database metadata cache
if (isset($options['isDefaultMetadataCache']) && true === (bool) $options['isDefaultMetadataCache']) {
Zend_Db_Table_Abstract::setDefaultMetadataCache($this->_cache);
}
/// use as default translate cache
if (isset($options['isDefaultTranslateCache']) && true === (bool) $options['isDefaultTranslateCache']) {
Zend_Translate::setCache($this->_cache);
}
/// use as default locale cache
if (isset($options['isDefaultLocaleCache']) && true === (bool) $options['isDefaultLocaleCache']) {
Zend_Locale::setCache($this->_cache);
}
/// add to registry
$key = (isset($options['registry_key']) && !is_numeric($options['registry_key'])) ? $options['registry_key'] : self::DEFAULT_REGISTRY_KEY;
Zend_Registry::set($key, $this->_cache);
}
return $this->_cache;
}
}
* This source code was highlighted with Source Code Highlighter.
Now you can initialize the cache using the application config:
# cache
resources.cache.frontend.adapter = core
resources.cache.frontend.params.lifetime = 7200
resources.cache.frontend.params.automatic_serialization = true
resources.cache.backend.adapter = file
resources.cache.backend.params.lifetime = 7200
resources.cache.backend.params.cache_dir = APPLICATION_PATH "/../trash/cache"
resources.cache.isDefaultMetadataCache = true
resources.cache.isDefaultTranslateCache = true
resources.cache. isDefaultLocaleCache = true
resources.cache.registry_key = cache We
also need to add the following line to the config for custom resources to work:
# custom resources
pluginPaths.App_Application_Resource_ = App / Application / Resource Have a nice
day, I hope I managed to interest you if you read it up here =)