# Changelog

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

## 3.2.0 - 2018-04-24

### Added

- [#47](https://github.com/zendframework/zend-config/pull/47) adds `Zend\Config\Writer\JavaProperties`, a complement to
  `Zend\Config\Reader\JavaProperties`, for writing JavaProperties files from configuration. The writer supports
  specifying an alternate key/value delimiter (the default is ":") via the constructor.

- [#46](https://github.com/zendframework/zend-config/pull/46) adds a constructor option to the JavaProperties reader to allow
  users to indicate keys and values from the configuration should be trimmed of whitespace:

  ```php
  $reader = new JavaProperties(
    JavaProperties::DELIMITER_DEFAULT, // or ":"
    JavaProperties::WHITESPACE_TRIM,   // or true; default is false
  );
  ```

- [#45](https://github.com/zendframework/zend-config/pull/45) adds the ability to specify an alternate key/value delimiter to
  the JavaProperties config reader via the constructor: `$reader = new JavaProperties("=");`.

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

### Changed

- Nothing.

### Deprecated

- Nothing.

### Removed

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

### Fixed

- Nothing.

## 3.1.0 - 2017-02-22

### Added

- [#37](https://github.com/zendframework/zend-config/pull/37) adds a new method,
  `enableKeyProcessing()`, and constructor argument, `$enableKeyProcessing =
  false`,  to each of the `Token` and `Constant` processors. These allow enabling
  processing of tokens and/or constants encountered in configuration key values.

- [#37](https://github.com/zendframework/zend-config/pull/37) adds the ability
  for the `Constant` processor to process class constants, including the
  `::class` pseudo-constant.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- Nothing.

## 3.0.0 - 2017-02-16

### Added

- [#36](https://github.com/zendframework/zend-config/pull/36) adds support for
  [PSR-11](http://www.php-fig.org/psr/psr-11/).

- [#36](https://github.com/zendframework/zend-config/pull/36) adds the class
  `Zend\Config\StandaloneReaderPluginManager` for managing config reader plugins.
  This implementation implements the PSR-11 `ContainerInterface`, and uses a
  hard-coded list of reader plugins.

- [#36](https://github.com/zendframework/zend-config/pull/36) adds the class
  `Zend\Config\StandaloneWriterPluginManager` for managing config writer plugins.
  This implementation implements the PSR-11 `ContainerInterface`, and uses a
  hard-coded list of writer plugins.

### Changes

- [#36](https://github.com/zendframework/zend-config/pull/36) updates the
  `Zend\Config\Factory::getReaderPluginManager()` method to lazy-load a
  `StandaloneReaderPluginManager` by default, instead of a
  `ReaderPluginManager`, allowing usage out-of-the-box without requiring
  zend-servicemanager.

- [#36](https://github.com/zendframework/zend-config/pull/36) updates the
  `Zend\Config\Factory::setReaderPluginManager()` method to typehint against
  `Psr\Container\ContainerInterface` instead of `ReaderPluginManager`. If you
  were extending and overriding that method, you will need to update your
  signature.

- [#36](https://github.com/zendframework/zend-config/pull/36) updates the
  `Zend\Config\Factory::getWriterPluginManager()` method to lazy-load a
  `StandaloneWriterPluginManager` by default, instead of a
  `WriterPluginManager`, allowing usage out-of-the-box without requiring
  zend-servicemanager.

- [#36](https://github.com/zendframework/zend-config/pull/36) updates the
  `Zend\Config\Factory::setWriterPluginManager()` method to typehint against
  `Psr\Container\ContainerInterface` instead of `WriterPluginManager`. If you
  were extending and overriding that method, you will need to update your
  signature.

### Deprecated

- Nothing.

### Removed

- [#36](https://github.com/zendframework/zend-config/pull/36) removes usage of
  zend-json as a JSON de/serializer in the JSON writer and reader; the
  component now requires ext/json is installed to use these features.

### Fixed

- Nothing.

## 2.6.0 - 2016-02-04

### Added

- [#6](https://github.com/zendframework/zend-config/pull/6) adds the ability for
  the `PhpArray` writer to optionally translate strings that evaluate to known
  classes to `ClassName::class` syntax; the feature works for both keys and
  values.
- [#21](https://github.com/zendframework/zend-config/pull/21) adds revised
  documentation, and publishes it to https://zendframework.github.io/zend-config/

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#8](https://github.com/zendframework/zend-config/pull/8),
  [#18](https://github.com/zendframework/zend-config/pull/18), and
  [#20](https://github.com/zendframework/zend-config/pull/20) update the
  code base to make it forwards-compatible with the v3.0 versions of
  zend-stdlib and zend-servicemanager. Primarily, this involved:
  - Updating the `AbstractConfigFactory` to implement the new methods in the
    v3 `AbstractFactoryInterface` definition, and updating the v2 methods to
    proxy to those.
  - Updating `ReaderPluginManager` and `WriterPluginManager` to follow the
    changes to `AbstractPluginManager`. In particular, instead of defining
    invokables, they now define a combination of aliases and factories (using
    the new `InvokableFactory`); additionally, they each now implement both
    `validatePlugin()` from v2 and `validate()` from v3.
  - Pinning to stable versions of already updated components.
  - Selectively omitting zend-i18n-reliant tests when testing against
    zend-servicemanager v3.