# Changelog

All notable changes to this project will be documented in this file, in reverse chronological order by release.

## 2.9.0 - 2019-08-29

### Added

- [#178](https://github.com/zendframework/zend-cache/pull/178) adds support for PHP 7.3.

### Changed

- [#186](https://github.com/zendframework/zend-cache/pull/186) replaces
  deprecated `delete()` calls with `del()` in Redis adapter. `delete()`
  function is deprecated since version 5.0.0 and `del()` is available
  since version 2.1.0.

### Deprecated

- Nothing.

### Removed

- [#178](https://github.com/zendframework/zend-cache/pull/178) removes support for zend-stdlib v2 releases.

### Fixed

- Nothing. 

## 2.8.3 - 2019-08-28

### Added

- Nothing.

### Changed

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#184](https://github.com/zendframework/zend-cache/pull/184) fixes
  an issue with SimpleCacheDecorator where elements were deleted
  after creation. Wrong TTL was set instead of using default value
  from options.

- [#182](https://github.com/zendframework/zend-cache/pull/182) fixes
  a typo in variable name within the `ExtMongoDbResourceManager::getResource`
  method which prevented using custom db name when using that adapter.

## 2.8.2 - 2018-05-01

### Added

- Nothing.

### Changed

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#168](https://github.com/zendframework/zend-cache/pull/168) fixes a typo in a variable name within the `Filesystem::setTags()` method which
  prevented clearing of tags when using that adapter.

## 2.8.1 - 2018-04-26

### Added

- Nothing.

### Changed

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#165](https://github.com/zendframework/zend-cache/issues/165) fixes an issue
  with the memcached adapter ensuring that retrieval returns boolean false when
  unable to retrieve the requested item.

## 2.8.0 - 2018-04-24

### Added

- [#148](https://github.com/zendframework/zend-cache/pull/148) adds support for PHP 7.1 and 7.2.

- [#46](https://github.com/zendframework/zend-cache/issues/46), [#155](https://github.com/zendframework/zend-cache/issues/155), and [#161](https://github.com/zendframework/zend-cache/issues/161) add support for [PSR-6](https://www.php-fig.org/psr/psr-6/) (Caching Interface).
  They provides an implementation of `Psr\Cache\CacheItemPoolInterface` via
  `Zend\Cache\Psr\CacheItemPool\CacheItemPoolDecorator`, which accepts a
  `Zend\Cache\Storage\StorageInterface` instance to its constructor, and proxies
  the various PSR-6 methods to it. It also provides a
  `Psr\Cache\CacheItemInterface` implementation via `Zend\Cache\Psr\CacheItemPool\CacheItem`,
  which provides a value object for both introspecting cache fetch results, as
  well as providing values to cache.

- [#152](https://github.com/zendframework/zend-cache/pull/152), [#155](https://github.com/zendframework/zend-cache/pull/155), [#159](https://github.com/zendframework/zend-cache/pull/159), and [#161](https://github.com/zendframework/zend-cache/issues/161)
  add an adapter providing [PSR-16](https://www.php-fig.org/psr/psr-16/) (Caching Library Interface) support.
  The new class, `Zend\Cache\Psr\SimpleCache\SimpleCacheDecorator`, accepts a
  `Zend\Cache\Storage\StorageInterface` instance to its constructor, and proxies
  the various PSR-16 methods to it.

- [#154](https://github.com/zendframework/zend-cache/pull/154) adds an ext-mongodb adapter, `Zend\Cache\Storage\Adapter\ExtMongoDb`.
  You may use the `StorageFactory` to create an instance using either the fully qualified class
  name as the adapter name, or the strings `ext_mongo_db` or `ExtMongoDB` (or most variations
  on case of the latter string). The options it accepts are the same as for the existing
  `Zend\Cache\Storage\Adapter\MongoDb`, and it provides the same capabilities. The adapter
  requires the mongodb/mongodb package to operate.

- [#120](https://github.com/zendframework/zend-cache/pull/120) adds the ability to configure alternate file suffixes for both
  cache and tag cache files within the Filesystem adapter. Use the `suffix` and `tag_suffix`
  options to set them; they will default to `dat` and `tag`, respectively.

- [#79](https://github.com/zendframework/zend-cache/issues/79)
  Add capability for the "lock-on-expire" feature (úsed by Zend Data Cache)

### Changed

- [#116](https://github.com/zendframework/zend-cache/pull/116) adds docblock method chaining consistency.

### Deprecated

- Nothing.

### Removed

- [#101](https://github.com/zendframework/zend-cache/pull/101) removes support for PHP 5.5.

- [#148](https://github.com/zendframework/zend-cache/pull/148) removes support for HHVM.

### Fixed

- [#151](https://github.com/zendframework/zend-cache/pull/151) adds logic to normalize options before creating the underlying Redis
  resource when using a Redis adapter, fixing issues when using an array with the server and port
  to use for connecting to the server.

- [#151](https://github.com/zendframework/zend-cache/pull/151) adds logic to prevent changing the underlying resource within Redis adapter instances.

- [#150](https://github.com/zendframework/zend-cache/pull/150) fixes an issue with how CAS tokens are handled when using the memcached adapter.

- [#61](https://github.com/zendframework/zend-cache/pull/61) sets the Zend Data Cache minTtl value to 1.

- [#147](https://github.com/zendframework/zend-cache/pull/147) fixes the Redis extension by ensuring it casts the results of `exists()` to a
  boolean when testing if the storage contains an item.

- [#146](https://github.com/zendframework/zend-cache/pull/146) fixes several methods to change `@return` annotations to `@throws` where applicable.

- [#134](https://github.com/zendframework/zend-cache/pull/134) adds a missing import statement for `Traversable` within the `AdapterOptions` class.

- [#128](https://github.com/zendframework/zend-cache/pull/128)
  Fixed incorrect variable usage in MongoDbResourceManager

## 2.7.2 - 2016-12-16

### Added

- [#124](https://github.com/zendframework/zend-cache/pull/124)
  New coding standard

### Deprecated

- [#123](https://github.com/zendframework/zend-cache/pull/123)
  Deprecate capability "expiredRead".
  It's basically providing the same information as staticTtl but from a wrong PoV

### Removed

- Nothing.

### Fixed

- [#122](https://github.com/zendframework/zend-cache/pull/122)
  Fixed redis doc for lib_options (not lib_option)
- [#118](https://github.com/zendframework/zend-cache/pull/118)
  fixed redis tests in case running with different server
- [#119](https://github.com/zendframework/zend-cache/pull/119)
  Redis: Don't call method Redis::info() every time
- [#113](https://github.com/zendframework/zend-cache/pull/113)
  Travis: Moved coverage reporting to latest env
- [#114](https://github.com/zendframework/zend-cache/pull/114)
  Travis: removed fast_finish flag
- [#107](https://github.com/zendframework/zend-cache/issues/107)
  fixed redis server version test in Redis::internalGetMetadata()
- [#111](https://github.com/zendframework/zend-cache/pull/111)
  Fixed typo in storage adapter doc
- [#102](https://github.com/zendframework/zend-cache/pull/102)
  filesystem: fixes a lot of possible race conditions

## 2.7.1 - 2016-05-12

### Added

- [#35](https://github.com/zendframework/zend-cache/pull/35)
  Added benchmarks using PHPBench

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#76](https://github.com/zendframework/zend-cache/pull/76)
  ZendServer: fixed return null on missing item
- [#88](https://github.com/zendframework/zend-cache/issues/88)
  Redis: fixed segfault on storing NULL and fixed supported datatypes capabilities
- [#95](https://github.com/zendframework/zend-cache/issues/95)
  don't try to unserialize missing items
- [#66](https://github.com/zendframework/zend-cache/issues/66)
  fixed Memcached::internalSetItems in PHP-7 by reducing variables by reference
- [#57](https://github.com/zendframework/zend-cache/pull/57)
  Memcached: HHVM compatibility and reduced duplicated code
- [#91](https://github.com/zendframework/zend-cache/pull/91)
  fixed that order of adapter options may cause exception
- [#98](https://github.com/zendframework/zend-cache/pull/98) updates the plugin
  manager alias list to ensure all adapter name permutations commonly used are
  accepted.

## 2.7.0 - 2016-04-12

### Added

- [#59](https://github.com/zendframework/zend-cache/pull/59)
  XCache >= 3.1.0 works in CLI mode
- [#23](https://github.com/zendframework/zend-cache/issues/23)
  [#47](https://github.com/zendframework/zend-cache/issues/47)
  Added an Apcu storage adapter as future replacement for Apc
- [#63](https://github.com/zendframework/zend-cache/pull/63)
  Implemented ClearByNamespaceInterface in Stoage\Adapter\Redis
- [#94](https://github.com/zendframework/zend-cache/pull/94) adds factories for
  each of the `PatternPluginManager`, `AdapterPluginManager`, and storage
  `PluginManager`.
- [#94](https://github.com/zendframework/zend-cache/pull/94) exposes the package
  as a standalone config-provider / ZF component, by adding:
  - `Zend\Cache\ConfigProvider`, which enables the
    `StorageCacheAbstractServiceFactory`, and maps factories for all plugin
    managers.
  - `Zend\Cache\Module`, which does the same, for zend-mvc contexts.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#44](https://github.com/zendframework/zend-cache/issues/44)
  Filesystem: fixed race condition in method clearByTags
- [#59](https://github.com/zendframework/zend-cache/pull/59)
  XCache: fixed broken internalSetItem() with empty namespace
- [#58](https://github.com/zendframework/zend-cache/issues/58)
  XCache: Fatal error storing objects
- [#94](https://github.com/zendframework/zend-cache/pull/94) updates the
  `PatternPluginManager` to accept `$options` to `get()` and `build()`, cast
  them to a `PatternOptions` instance, and inject them into the generated plugin
  instance. This change allows better standalone usage of the plugin manager.
- [#94](https://github.com/zendframework/zend-cache/pull/94) updates the
  `StorageCacheFactory` and `StorageCacheAbstractServiceFactory` to seed the
  `StorageFactory` with the storage plugin manager and/or adapter plugin manager
  as pulled from the provided container, if present. This change enables re-use
  of pre-configured plugin managers (e.g., those seeded with custom plugins
  and/or adapters).

## 2.6.1 - 2016-02-12

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#73](https://github.com/zendframework/zend-cache/pull/73) fixes how the
  `EventManager` instance is lazy-instantiated in
  `Zend\Cache\Storage\Adapter\AbstractAdapter::getEventManager()`. In 2.6.0, it
  was using the v3-specific syntax; it now uses syntax compatible with both v2
  and v3.

## 2.6.0 - 2016-02-11

### Added

- [#70](https://github.com/zendframework/zend-cache/pull/70) adds, revises, and
  publishes the documentation to https://zendframework.github.io/zend-cache/

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#22](https://github.com/zendframework/zend-cache/pull/22),
  [#64](https://github.com/zendframework/zend-cache/pull/64),
  [#68](https://github.com/zendframework/zend-cache/pull/68), and
  [#69](https://github.com/zendframework/zend-cache/pull/69) update the
  component to be forwards-compatible with zend-eventmanager,
  zend-servicemanager, and zend-stdlib v3.
- [#31](https://github.com/zendframework/zend-cache/issues/31)
  Check Documentation Code Blocks
- [#53](https://github.com/zendframework/zend-cache/pull/53)
  fixed seg fault in redis adapter on PHP 7
- [#50](https://github.com/zendframework/zend-cache/issues/50)
  fixed APC tests not running on travis-ci since apcu-5 was released
- [#36](https://github.com/zendframework/zend-cache/pull/36)
  fixed AbstractAdapter::internalDecrementItems
- [#38](https://github.com/zendframework/zend-cache/pull/38)
  better test coverage of AbstractAdapter
- [#45](https://github.com/zendframework/zend-cache/pull/45)
  removed unused internal function Filesystem::readInfoFile
- [#25](https://github.com/zendframework/zend-cache/pull/25)
  MongoDd: fixed expiration support and removed duplicated tests
- [#40](https://github.com/zendframework/zend-cache/pull/40)
  Fixed TTL support of `Redis::addItem`
- [#18](https://github.com/zendframework/zend-cache/issues/18)
  Fixed `Redis::getCapabilities` and `RedisResourceManager::getMajorVersion`
  if resource wasn't initialized before

## 2.5.3 - 2015-09-15

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#15](https://github.com/zendframework/zend-cache/pull/15) fixes an issue
  observed on HHVM when merging a list of memcached servers to add to the
  storage resource.
- [#17](https://github.com/zendframework/zend-cache/pull/17) Composer: moved
  `zendframework/zend-serializer` from `require` to `require-dev` as using the
  serializer is optional.
- A fix was provided for [ZF2015-07](http://framework.zend.com/security/advisory/ZF2015-07),
  ensuring that any directories or files created by the component use umask 0002
  in order to prevent arbitrary local execution and/or local privilege
  escalation.

## 2.5.2 - 2015-07-16

### Added

- [#10](https://github.com/zendframework/zend-cache/pull/10) adds TTL support
  for the Redis adapter.
- [#6](https://github.com/zendframework/zend-cache/pull/6) adds more suggestions
  to the `composer.json` for PHP extensions supported by storage adapters.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#9](https://github.com/zendframework/zend-cache/pull/9) fixes an issue when
  connecting to a Redis instance with the `persistent_id` option.
