# Changelog All notable changes to this project will be documented in this file, in reverse chronological order by release. ## 2.7.11 - 2018-06-22 ### Added - Nothing. ### Changed - Nothing. ### Deprecated - Nothing. ### Removed - Nothing. ### Fixed - [#269](https://github.com/zendframework/zend-servicemanager/pull/269) fixes a regression whereby using static Callable strings caused an undefined variable notice. ## 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.