# Changelog

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

## 2.7.10 - 2017-12-05

### Added

- Nothing.

### Changed

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#210](https://github.com/zendframework/zend-servicemanager/pull/210) fixes a
  regression whereby factories accepting creation options were receiving an
  empty array versus a `null` value when no options were present for a
  particular invocation; they now correctly receive a `null` value.

## 2.7.9 - 2017-11-27

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#205](https://github.com/zendframework/zend-servicemanager/pull/205) fixes
  how the `AbstractPluginManager` handles repeated retrievals of the same
  service when instance options are provided and the service is marked as
  "shared".  Previously, it incorrectly would return the first instance
  retrieved; with this release, no instance created with instance options is
  ever shared.

## 2.7.8 - 2016-12-19

### Added

- Nothing.

### Changes

- [#158](https://github.com/zendframework/zend-servicemanager/pull/158) provides
  a performance optimization within the `InvokableFactory`, ensuring it checks
  for a class matching the `$requestedName` prior to the `$canonicalName`; this
  also is more in line with version 3, which only has access to the requested
  name.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#164](https://github.com/zendframework/zend-servicemanager/pull/164) fixes
  how the `InvokableFactory` deals with creation options. Prior to this release,
  absence of options led to setting the creation options to an empty array,
  which, because it was non-null, led to breakage in plugins that treated an
  empty array differently than null. This patch ensures that the original
  behavior is restored.
- [#168](https://github.com/zendframework/zend-servicemanager/pull/168) fixes
  how exception codes are provided to `ServiceNotCreatedException`. Previously,
  the code was provided as-is. However, some PHP internal exception classes,
  notably `PDOException`, can sometimes return other values (such as strings),
  which can lead to fatal errors when instantiating the new exception. The patch
  provided casts exception codes to integers to prevent these errors.

## 2.7.7 - 2016-09-01

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#127](https://github.com/zendframework/zend-servicemanager/pull/127) fixes
  how the `AbstractPluingManager` handles `$options` arrays passed when
  retrieving a plugin when that plugin resolves to the `InvokableFactory`,
  ensuring subsequent calls with different options are created correctly.

## 2.7.6 - 2016-04-27

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#116](https://github.com/zendframework/zend-servicemanager/pull/116) updates
  `ServiceLocatorInterface` to extend container-interop's `ContainerInterface`,
  as the definitions are compatible. This change will mean that implementing
  `ServiceLocatorInterface` will provide a `ContainerInterface` implementation.

## 2.7.5 - 2016-02-02

### Added

- [#81](https://github.com/zendframework/zend-servicemanager/pull/81) adds a
  test covering forwards-compatibility features for plugin manager
  implementations.
- [#96](https://github.com/zendframework/zend-servicemanager/pull/96) adds
  `Zend\ServiceManager\Test\CommonPluginManagerTrait`, which allows you to test
  that your plugin manager is forwards compatible with v3.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#91](https://github.com/zendframework/zend-servicemanager/pull/91) updates
  the `InvokableFactory` to add the `setCreationOptions()` method, allowing
  the `InvokableFactory` to accept `$options` when triggered.

## 2.7.4 - 2015-01-19

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#71](https://github.com/zendframework/zend-servicemanager/pull/71) fixes an edge case
  with alias usage, whereby an alias of an alias was not being resolved to the
  final service name.

## 2.7.3 - 2016-01-13

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#69](https://github.com/zendframework/zend-servicemanager/pull/69) fixes the
  way aliases are resolved to ensure that the original alias target, without
  canonicalization is passed to factories and abstract factories, ensuring that
  features such as the `InvokableFactory` implementation can work.

## 2.7.2 - 2016-01-11

### Added

- [#63](https://github.com/zendframework/zend-servicemanager/pull/63) adds a
  constructor to `InvokableFactory`. In v2, this allows plugin managers to pass
  construction options to the factory to use during instantiation of the
  requested service class, emulating the behavior of `build()` in v3.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- Nothing.

## 2.7.1 - 2016-01-11

### Added

- [#61](https://github.com/zendframework/zend-servicemanager/pull/61) adds
  `Zend\ServiceManager\Exception\InvalidServiceException` for forwards
  compatibility with v3.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#61](https://github.com/zendframework/zend-servicemanager/pull/61) updates
  the `InvokableFactory` to throw `InvalidServiceException` instead of
  `InvalidServiceNameException`, for forwards compatibility with v3.
- [#61](https://github.com/zendframework/zend-servicemanager/pull/61) fixes
  the behavior of `InvokableFactory` when invoked after resolving an alias.

## 2.7.0 - 2016-01-11

### Added

- [#60](https://github.com/zendframework/zend-servicemanager/pull/60) adds
  forward compatibility features for `AbstractPluingManager` and introduces
  `InvokableFactory` to help forward migration to version 3.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#46](https://github.com/zendframework/zend-servicemanager/pull/46) updates
  the exception hierarchy to inherit from the container-interop exceptions.
  This ensures that all exceptions thrown by the component follow the
  recommendations of that project.
- [#52](https://github.com/zendframework/zend-servicemanager/pull/52) fixes
  the exception message thrown by `ServiceManager::setFactory()` to remove
  references to abstract factories.

## 2.6.0 - 2015-07-23

### Added

- [#4](https://github.com/zendframework/zend-servicemanager/pull/4) updates the
    `ServiceManager` to [implement the container-interop interface](https://github.com/container-interop/container-interop),
    allowing interoperability with applications that consume that interface.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#3](https://github.com/zendframework/zend-servicemanager/pull/3) properly updates the
  codebase to PHP 5.5, by taking advantage of the default closure binding
  (`$this` in a closure is the invoking object when created within a method). It
  also removes several `@requires PHP 5.4.0` annotations.
