📜 ⬆️ ⬇️

Cache resource for the Zend Framework

Hello. Just want to say that the article is designed for those who are already familiar with this framework. The new versions of the Zend Framework came up with the concept of initializing application components via resource plugins. There are enough of them in the standard delivery, but I haven’t found one. That is the cache. After wandering through the expanses of the Internet and not finding analogues, I decided to write my own. And so, let's get started.



Custom resources will be stored in the library / app / application / resource folder. Put the Cache.php file with the source code 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

You also need to add the following line to the config so that custom resources work:

# custom resources
pluginPaths.App_Application_Resource_ = App / Application / Resource

Have a nice day, I hope I managed to interest you if you have read to here =)

Source: https://habr.com/ru/post/78254/


All Articles