diff --git a/.gitattributes b/.gitattributes index 669f2d3e..adb8dc0c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,8 +2,7 @@ /.gitattributes export-ignore /.gitignore export-ignore /.travis.yml export-ignore -/benchmarks export-ignore -/composer.lock export-ignore +/benchmarks/ export-ignore /docs/ export-ignore /mkdocs.yml export-ignore /phpbench.json export-ignore diff --git a/.gitignore b/.gitignore index 245087af..87904ecb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ /clover.xml +/composer.lock /coveralls-upload.json /docs/html/ +/laminas-mkdoc-theme.tgz +/laminas-mkdoc-theme/ /phpunit.xml /vendor/ -/zf-mkdoc-theme.tgz -/zf-mkdoc-theme/ diff --git a/.travis.yml b/.travis.yml index 06a9ca0e..787e5e69 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,3 @@ -sudo: false - language: php cache: @@ -12,24 +10,17 @@ env: - COVERAGE_DEPS="satooshi/php-coveralls" matrix: + fast_finish: true include: - php: 5.6 env: - DEPS=lowest - - php: 5.6 - env: - - DEPS=locked - - LEGACY_DEPS="ocramius/proxy-manager phpbench/phpbench phpunit/phpunit" - php: 5.6 env: - DEPS=latest - php: 7 env: - DEPS=lowest - - php: 7 - env: - - DEPS=locked - - LEGACY_DEPS="ocramius/proxy-manager phpbench/phpbench phpunit/phpunit" - php: 7 env: - DEPS=latest @@ -38,19 +29,13 @@ matrix: - DEPS=lowest - php: 7.1 env: - - DEPS=locked + - DEPS=latest - BENCHMARKS=true - CS_CHECK=true - TEST_COVERAGE=true - - php: 7.1 - env: - - DEPS=latest - php: 7.2 env: - DEPS=lowest - - php: 7.2 - env: - - DEPS=locked - php: 7.2 env: - DEPS=latest diff --git a/CHANGELOG.md b/CHANGELOG.md index b93ccc6e..8bde207e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,20 +22,20 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#243](https://github.com/zendframework/zend-servicemanager/pull/243) provides +- [zendframework/zend-servicemanager#243](https://github.com/zendframework/zend-servicemanager/pull/243) provides a fix to the `ReflectionBasedAbstractFactory` to resolve type-hinted arguments with default values to their default values if no matching type is found in the container. -- [#233](https://github.com/zendframework/zend-servicemanager/pull/233) fixes a +- [zendframework/zend-servicemanager#233](https://github.com/zendframework/zend-servicemanager/pull/233) fixes a number of parameter annotations to reflect the actual types used. ## 3.3.1 - 2017-11-27 ### Added -- [#201](https://github.com/zendframework/zend-servicemanager/pull/201) and - [#202](https://github.com/zendframework/zend-servicemanager/pull/202) add +- [zendframework/zend-servicemanager#201](https://github.com/zendframework/zend-servicemanager/pull/201) and + [zendframework/zend-servicemanager#202](https://github.com/zendframework/zend-servicemanager/pull/202) add support for PHP versions 7.1 and 7.2. ### Deprecated @@ -48,7 +48,7 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#206](https://github.com/zendframework/zend-servicemanager/pull/206) fixes an +- [zendframework/zend-servicemanager#206](https://github.com/zendframework/zend-servicemanager/pull/206) fixes an issue where by callables in `Class::method` notation were not being honored under PHP 5.6. @@ -56,10 +56,10 @@ All notable changes to this project will be documented in this file, in reverse ### Added -- [#180](https://github.com/zendframework/zend-servicemanager/pull/180) adds +- [zendframework/zend-servicemanager#180](https://github.com/zendframework/zend-servicemanager/pull/180) adds explicit support for PSR-11 (ContainerInterface) by requiring container-interop at a minimum version of 1.2.0, and adding a requirement on - psr/container 1.0. `Zend\ServiceManager\ServiceLocatorInterface` now + psr/container 1.0. `Laminas\ServiceManager\ServiceLocatorInterface` now explicitly extends the `ContainerInterface` from both projects. Factory interfaces still typehint against the container-interop variant, as @@ -83,7 +83,7 @@ All notable changes to this project will be documented in this file, in reverse ### Added -- [#176](https://github.com/zendframework/zend-servicemanager/pull/176) adds +- [zendframework/zend-servicemanager#176](https://github.com/zendframework/zend-servicemanager/pull/176) adds the options `-i` or `--ignore-unresolved` to the shipped `generate-deps-for-config-factory` command. This flag allows it to build configuration for classes resolved by the `ConfigAbstractFactory` that @@ -99,7 +99,7 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#174](https://github.com/zendframework/zend-servicemanager/pull/174) updates +- [zendframework/zend-servicemanager#174](https://github.com/zendframework/zend-servicemanager/pull/174) updates the `ConfigAbstractFactory` to allow the `config` service to be either an `array` or an `ArrayObject`; previously, only `array` was supported. @@ -107,24 +107,24 @@ All notable changes to this project will be documented in this file, in reverse ### Added -- [#146](https://github.com/zendframework/zend-servicemanager/pull/146) adds - `Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory`, which enables a +- [zendframework/zend-servicemanager#146](https://github.com/zendframework/zend-servicemanager/pull/146) adds + `Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory`, which enables a configuration-based approach to providing class dependencies when all dependencies are services known to the `ServiceManager`. Please see [the documentation](doc/book/config-abstract-factory.md) for details. -- [#154](https://github.com/zendframework/zend-servicemanager/pull/154) adds - `Zend\ServiceManager\Tool\ConfigDumper`, which will introspect a given class +- [zendframework/zend-servicemanager#154](https://github.com/zendframework/zend-servicemanager/pull/154) adds + `Laminas\ServiceManager\Tool\ConfigDumper`, which will introspect a given class to determine dependencies, and then create configuration for - `Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory`, merging it with + `Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory`, merging it with the provided configuration file. It also adds a vendor binary, `generate-deps-for-config-factory`, for generating these from the command line. -- [#154](https://github.com/zendframework/zend-servicemanager/pull/154) adds - `Zend\ServiceManager\Tool\FactoryCreator`, which will introspect a given class +- [zendframework/zend-servicemanager#154](https://github.com/zendframework/zend-servicemanager/pull/154) adds + `Laminas\ServiceManager\Tool\FactoryCreator`, which will introspect a given class and generate a factory for it. It also adds a vendor binary, `generate-factory-for-class`, for generating these from the command line. -- [#153](https://github.com/zendframework/zend-servicemanager/pull/153) adds - `Zend\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory`. This +- [zendframework/zend-servicemanager#153](https://github.com/zendframework/zend-servicemanager/pull/153) adds + `Laminas\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory`. This class may be used as either a mapped factory or an abstract factory, and will use reflection in order to determine which dependencies to use from the container when instantiating the requested service, with the following rules: @@ -133,7 +133,7 @@ All notable changes to this project will be documented in this file, in reverse `config` service, if present. - All other array values will be provided an empty array. - Class/interface typehints will be pulled from the container. -- [#150](https://github.com/zendframework/zend-servicemanager/pull/150) adds +- [zendframework/zend-servicemanager#150](https://github.com/zendframework/zend-servicemanager/pull/150) adds a "cookbook" section to the documentation, with an initial document detailing the pros and cons of abstract factory usage. @@ -147,7 +147,7 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#106](https://github.com/zendframework/zend-servicemanager/pull/106) adds +- [zendframework/zend-servicemanager#106](https://github.com/zendframework/zend-servicemanager/pull/106) adds detection of multiple attempts to register the same instance or named abstract factory, using a previous instance when detected. You may still use multiple discrete instances, however. @@ -168,7 +168,7 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#167](https://github.com/zendframework/zend-servicemanager/pull/167) fixes +- [zendframework/zend-servicemanager#167](https://github.com/zendframework/zend-servicemanager/pull/167) 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), @@ -191,7 +191,7 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#136](https://github.com/zendframework/zend-servicemanager/pull/136) removes +- [zendframework/zend-servicemanager#136](https://github.com/zendframework/zend-servicemanager/pull/136) removes several imports to classes in subnamespaces within the `ServiceManager` classfile, removing potential name resolution conflicts that occurred in edge cases when testing. @@ -200,16 +200,16 @@ All notable changes to this project will be documented in this file, in reverse ### Added -- [#103](https://github.com/zendframework/zend-servicemanager/pull/103) Allowing +- [zendframework/zend-servicemanager#103](https://github.com/zendframework/zend-servicemanager/pull/103) Allowing installation of `ocramius/proxy-manager` `^2.0` together with `zendframework/zend-servicemanager`. -- [#103](https://github.com/zendframework/zend-servicemanager/pull/103) Disallowing +- [zendframework/zend-servicemanager#103](https://github.com/zendframework/zend-servicemanager/pull/103) Disallowing test failures when running tests against PHP `7.0.*`. -- [#113](https://github.com/zendframework/zend-servicemanager/pull/113) Improved performance +- [zendframework/zend-servicemanager#113](https://github.com/zendframework/zend-servicemanager/pull/113) Improved performance when dealing with registering aliases and factories via `ServiceManager#setFactory()` and `ServiceManager#setAlias()` -- [#120](https://github.com/zendframework/zend-servicemanager/pull/120) The - `zendframework/zend-servicemanager` component now provides a +- [zendframework/zend-servicemanager#120](https://github.com/zendframework/zend-servicemanager/pull/120) The + `laminas/laminas-servicemanager` component now provides a `container-interop/container-interop-implementation` implementation ### Deprecated @@ -222,9 +222,9 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#97](https://github.com/zendframework/zend-servicemanager/pull/97) Typo corrections +- [zendframework/zend-servicemanager#97](https://github.com/zendframework/zend-servicemanager/pull/97) Typo corrections in the delegator factories documentation. -- [#98](https://github.com/zendframework/zend-servicemanager/pull/98) Using coveralls ^1.0 +- [zendframework/zend-servicemanager#98](https://github.com/zendframework/zend-servicemanager/pull/98) Using coveralls ^1.0 for tracking test code coverage changes. ## 3.0.4 - TBD @@ -249,15 +249,15 @@ All notable changes to this project will be documented in this file, in reverse ### Added -- [#89](https://github.com/zendframework/zend-servicemanager/pull/89) adds +- [zendframework/zend-servicemanager#89](https://github.com/zendframework/zend-servicemanager/pull/89) adds cyclic alias detection to the `ServiceManager`; it now raises a - `Zend\ServiceManager\Exception\CyclicAliasException` when one is detected, + `Laminas\ServiceManager\Exception\CyclicAliasException` when one is detected, detailing the cycle detected. -- [#95](https://github.com/zendframework/zend-servicemanager/pull/95) adds +- [zendframework/zend-servicemanager#95](https://github.com/zendframework/zend-servicemanager/pull/95) adds GitHub Pages publication automation, and moves the documentation to - https://zendframework.github.io/zend-servicemanager/ -- [#93](https://github.com/zendframework/zend-servicemanager/pull/93) adds - `Zend\ServiceManager\Test\CommonPluginManagerTrait`, which can be used to + https://docs.laminas.dev/laminas-servicemanager/ +- [zendframework/zend-servicemanager#93](https://github.com/zendframework/zend-servicemanager/pull/93) adds + `Laminas\ServiceManager\Test\CommonPluginManagerTrait`, which can be used to validate that a plugin manager instance is ready for version 3. ### Deprecated @@ -270,19 +270,19 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#90](https://github.com/zendframework/zend-servicemanager/pull/90) fixes +- [zendframework/zend-servicemanager#90](https://github.com/zendframework/zend-servicemanager/pull/90) fixes several examples in the configuration chapter of the documentation, ensuring that the signatures are correct. -- [#92](https://github.com/zendframework/zend-servicemanager/pull/92) ensures +- [zendframework/zend-servicemanager#92](https://github.com/zendframework/zend-servicemanager/pull/92) ensures that alias resolution is skipped during configuration if no aliases are - present, and forward-ports the test from [#81](https://github.com/zendframework/zend-servicemanager/pull/81) + present, and forward-ports the test from [zendframework/zend-servicemanager#81](https://github.com/zendframework/zend-servicemanager/pull/81) to validate v2/v3 compatibility for plugin managers. ## 3.0.2 - 2016-01-24 ### Added -- [#64](https://github.com/zendframework/zend-servicemanager/pull/64) performance optimizations +- [zendframework/zend-servicemanager#64](https://github.com/zendframework/zend-servicemanager/pull/64) performance optimizations when dealing with alias resolution during service manager instantiation ### Deprecated @@ -295,14 +295,14 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- [#62](https://github.com/zendframework/zend-servicemanager/pull/62) - [#64](https://github.com/zendframework/zend-servicemanager/pull/64) corrected benchmark assets signature -- [#72](https://github.com/zendframework/zend-servicemanager/pull/72) corrected link to the Proxy Pattern Wikipedia +- [zendframework/zend-servicemanager#62](https://github.com/zendframework/zend-servicemanager/pull/62) + [zendframework/zend-servicemanager#64](https://github.com/zendframework/zend-servicemanager/pull/64) corrected benchmark assets signature +- [zendframework/zend-servicemanager#72](https://github.com/zendframework/zend-servicemanager/pull/72) corrected link to the Proxy Pattern Wikipedia page in the documentation -- [#78](https://github.com/zendframework/zend-servicemanager/issues/78) - [#79](https://github.com/zendframework/zend-servicemanager/pull/79) creation context was not being correctly passed +- [zendframework/zend-servicemanager#78](https://github.com/zendframework/zend-servicemanager/issues/78) + [zendframework/zend-servicemanager#79](https://github.com/zendframework/zend-servicemanager/pull/79) creation context was not being correctly passed to abstract factories when using plugin managers -- [#82](https://github.com/zendframework/zend-servicemanager/pull/82) corrected migration guide in the DocBlock of +- [zendframework/zend-servicemanager#82](https://github.com/zendframework/zend-servicemanager/pull/82) corrected migration guide in the DocBlock of the `InitializerInterface` ## 3.0.1 - 2016-01-19 @@ -317,9 +317,9 @@ All notable changes to this project will be documented in this file, in reverse ### Removed -- [#68](https://github.com/zendframework/zend-servicemanager/pull/68) removes - the dependency on zend-stdlib by inlining the `ArrayUtils::merge()` routine - as a private method of `Zend\ServiceManager\Config`. +- [zendframework/zend-servicemanager#68](https://github.com/zendframework/zend-servicemanager/pull/68) removes + the dependency on laminas-stdlib by inlining the `ArrayUtils::merge()` routine + as a private method of `Laminas\ServiceManager\Config`. ### Fixed @@ -327,21 +327,21 @@ All notable changes to this project will be documented in this file, in reverse ## 3.0.0 - 2016-01-11 -First stable release of version 3 of zend-servicemanager. +First stable release of version 3 of laminas-servicemanager. -Documentation is now available at http://zend-servicemanager.rtfd.org +Documentation is now available at http://laminas-servicemanager.rtfd.org ### Added - You can now map multiple key names to the same factory. It was previously - possible in ZF2 but it was not enforced by the `FactoryInterface` interface. + possible in Laminas but it was not enforced by the `FactoryInterface` interface. Now the interface receives the `$requestedName` as the *second* parameter (previously, it was the third). Example: ```php - $sm = new \Zend\ServiceManager\ServiceManager([ + $sm = new \Laminas\ServiceManager\ServiceManager([ 'factories' => [ MyClassA::class => MyFactory::class, MyClassB::class => MyFactory::class, @@ -356,7 +356,7 @@ Documentation is now available at http://zend-servicemanager.rtfd.org longer need to implement the complete `validate` method. In versions 2.x, if your plugin manager only allows creating instances that - implement `Zend\Validator\ValidatorInterface`, you needed to write the + implement `Laminas\Validator\ValidatorInterface`, you needed to write the following code: ```php @@ -364,14 +364,14 @@ Documentation is now available at http://zend-servicemanager.rtfd.org { public function validate($instance) { - if ($instance instanceof \Zend\Validator\ValidatorInterface) { + if ($instance instanceof \Laminas\Validator\ValidatorInterface) { return; } throw new InvalidServiceException(sprintf( 'Plugin manager "%s" expected an instance of type "%s", but "%s" was received', __CLASS__, - \Zend\Validator\ValidatorInterface::class, + \Laminas\Validator\ValidatorInterface::class, is_object($instance) ? get_class($instance) : gettype($instance) )); } @@ -381,8 +381,8 @@ Documentation is now available at http://zend-servicemanager.rtfd.org In version 3, this becomes: ```php - use Zend\ServiceManager\AbstractPluginManager; - use Zend\Validator\ValidatorInterface; + use Laminas\ServiceManager\AbstractPluginManager; + use Laminas\Validator\ValidatorInterface; class MyPluginManager extends AbstractPluginManager { @@ -414,7 +414,7 @@ Documentation is now available at http://zend-servicemanager.rtfd.org - Peering has been removed. It was a complex and rarely used feature that was misunderstood most of the time. -- Integration with `Zend\Di` has been removed. It may be re-integrated later. +- Integration with `Laminas\Di` has been removed. It may be re-integrated later. - `MutableCreationOptionsInterface` has been removed, as options can now be passed directly through factories. @@ -429,23 +429,23 @@ v3 of the ServiceManager component is a completely rewritten, more efficient implementation of the service locator pattern. It includes a number of breaking changes, outlined in this section. -- You no longer need a `Zend\ServiceManager\Config` object to configure the +- You no longer need a `Laminas\ServiceManager\Config` object to configure the service manager; you can pass the configuration array directly instead. In version 2.x: ```php - $config = new \Zend\ServiceManager\Config([ + $config = new \Laminas\ServiceManager\Config([ 'factories' => [...] ]); - $sm = new \Zend\ServiceManager\ServiceManager($config); + $sm = new \Laminas\ServiceManager\ServiceManager($config); ``` - In ZF 3.x: + In Laminas 3.x: ```php - $sm = new \Zend\ServiceManager\ServiceManager([ + $sm = new \Laminas\ServiceManager\ServiceManager([ 'factories' => [...] ]); ``` @@ -569,7 +569,7 @@ changes, outlined in this section. ### Added -- [#60](https://github.com/zendframework/zend-servicemanager/pull/60) adds +- [zendframework/zend-servicemanager#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. @@ -583,11 +583,11 @@ changes, outlined in this section. ### Fixed -- [#46](https://github.com/zendframework/zend-servicemanager/pull/46) updates +- [zendframework/zend-servicemanager#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 +- [zendframework/zend-servicemanager#52](https://github.com/zendframework/zend-servicemanager/pull/52) fixes the exception message thrown by `ServiceManager::setFactory()` to remove references to abstract factories. @@ -595,7 +595,7 @@ changes, outlined in this section. ### Added -- [#4](https://github.com/zendframework/zend-servicemanager/pull/4) updates the +- [zendframework/zend-servicemanager#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. @@ -609,7 +609,7 @@ changes, outlined in this section. ### Fixed -- [#3](https://github.com/zendframework/zend-servicemanager/pull/3) properly updates the +- [zendframework/zend-servicemanager#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. diff --git a/COPYRIGHT.md b/COPYRIGHT.md new file mode 100644 index 00000000..c4fc4fee --- /dev/null +++ b/COPYRIGHT.md @@ -0,0 +1,2 @@ +Copyright (c) 2019, Laminas Foundation. +All rights reserved. (https://getlaminas.org/) diff --git a/LICENSE.md b/LICENSE.md index 63df4102..09f53edc 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,19 +1,19 @@ -Copyright (c) 2005-2017, Zend Technologies USA, Inc. +Copyright (c) 2019, Laminas Foundation All rights reserved. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -- Neither the name of Zend Technologies USA, Inc. nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. +- Neither the name of Laminas Foundation nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED diff --git a/README.md b/README.md index 3da92e48..6c662dec 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ -# zend-servicemanager +# laminas-servicemanager Master: -[![Build Status](https://secure.travis-ci.org/zendframework/zend-servicemanager.svg?branch=master)](https://secure.travis-ci.org/zendframework/zend-servicemanager) -[![Coverage Status](https://coveralls.io/repos/github/zendframework/zend-servicemanager/badge.svg?branch=master)](https://coveralls.io/github/zendframework/zend-servicemanager?branch=master) +[![Build Status](https://travis-ci.org/laminas/laminas-servicemanager.svg?branch=master)](https://travis-ci.org/laminas/laminas-servicemanager) +[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-servicemanager/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-servicemanager?branch=master) Develop: -[![Build Status](https://secure.travis-ci.org/zendframework/zend-servicemanager.svg?branch=develop)](https://secure.travis-ci.org/zendframework/zend-servicemanager) -[![Coverage Status](https://coveralls.io/repos/github/zendframework/zend-servicemanager/badge.svg?branch=develop)](https://coveralls.io/github/zendframework/zend-servicemanager?branch=develop) +[![Build Status](https://travis-ci.org/laminas/laminas-servicemanager.svg?branch=develop)](https://travis-ci.org/laminas/laminas-servicemanager) +[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-servicemanager/badge.svg?branch=develop)](https://coveralls.io/github/laminas/laminas-servicemanager?branch=develop) -The Service Locator design pattern is implemented by the `Zend\ServiceManager` +The Service Locator design pattern is implemented by the `Laminas\ServiceManager` component. The Service Locator is a service/object locator, tasked with retrieving other objects. -- File issues at https://github.com/zendframework/zend-servicemanager/issues -- [Online documentation](https://docs.zendframework.com/zend-servicemanager) +- File issues at https://github.com/laminas/laminas-servicemanager/issues +- [Online documentation](https://docs.laminas.dev/laminas-servicemanager) - [Documentation source files](doc/book/) ## Benchmarks -We provide scripts for benchmarking zend-servicemanager using the +We provide scripts for benchmarking laminas-servicemanager using the [PHPBench](https://github.com/phpbench/phpbench) framework; these can be found in the `benchmarks/` directory. diff --git a/benchmarks/BenchAsset/AbstractFactoryFoo.php b/benchmarks/BenchAsset/AbstractFactoryFoo.php index 68879f68..d54fe3e5 100644 --- a/benchmarks/BenchAsset/AbstractFactoryFoo.php +++ b/benchmarks/BenchAsset/AbstractFactoryFoo.php @@ -1,14 +1,15 @@ =5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "zendframework/zend-stdlib", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/debedcfc373a293f9250cc9aa03cf121428c8e78", - "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Stdlib\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-stdlib", - "keywords": [ - "stdlib", - "zf2" - ], - "time": "2016-09-13T14:38:50+00:00" - } - ], - "packages-dev": [ - { - "name": "beberlei/assert", - "version": "v2.7.11", - "source": { - "type": "git", - "url": "https://github.com/beberlei/assert.git", - "reference": "53991547d6f0b8c81354fb2d098dcb71e81678cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/53991547d6f0b8c81354fb2d098dcb71e81678cb", - "reference": "53991547d6f0b8c81354fb2d098dcb71e81678cb", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1.1", - "phpunit/phpunit": "^4.8.35|^5.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Assert\\": "lib/Assert" - }, - "files": [ - "lib/Assert/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de", - "role": "Lead Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Collaborator" - } - ], - "description": "Thin assertion library for input validation in business models.", - "keywords": [ - "assert", - "assertion", - "validation" - ], - "time": "2017-11-13T18:35:09+00:00" - }, - { - "name": "doctrine/annotations", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f", - "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2017-07-22T10:58:02+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2017-07-22T11:58:36+00:00" - }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ], - "time": "2014-09-09T13:34:57+00:00" - }, - { - "name": "lstrojny/functional-php", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/lstrojny/functional-php.git", - "reference": "c0c15f048355d0a7ab17914022ec1f901fe5144a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lstrojny/functional-php/zipball/c0c15f048355d0a7ab17914022ec1f901fe5144a", - "reference": "c0c15f048355d0a7ab17914022ec1f901fe5144a", - "shasum": "" - }, - "require": { - "php": "~7" - }, - "require-dev": { - "phpunit/phpunit": "~6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Functional\\": "src/Functional" - }, - "files": [ - "src/Functional/Average.php", - "src/Functional/Capture.php", - "src/Functional/ConstFunction.php", - "src/Functional/CompareOn.php", - "src/Functional/CompareObjectHashOn.php", - "src/Functional/Compose.php", - "src/Functional/Concat.php", - "src/Functional/Contains.php", - "src/Functional/Curry.php", - "src/Functional/CurryN.php", - "src/Functional/Difference.php", - "src/Functional/DropFirst.php", - "src/Functional/DropLast.php", - "src/Functional/Each.php", - "src/Functional/Equal.php", - "src/Functional/ErrorToException.php", - "src/Functional/Every.php", - "src/Functional/False.php", - "src/Functional/Falsy.php", - "src/Functional/Filter.php", - "src/Functional/First.php", - "src/Functional/FirstIndexOf.php", - "src/Functional/FlatMap.php", - "src/Functional/Flatten.php", - "src/Functional/Flip.php", - "src/Functional/GreaterThan.php", - "src/Functional/GreaterThanOrEqual.php", - "src/Functional/Group.php", - "src/Functional/Head.php", - "src/Functional/Id.php", - "src/Functional/IfElse.php", - "src/Functional/Identical.php", - "src/Functional/IndexesOf.php", - "src/Functional/Intersperse.php", - "src/Functional/Invoke.php", - "src/Functional/InvokeFirst.php", - "src/Functional/InvokeIf.php", - "src/Functional/InvokeLast.php", - "src/Functional/Invoker.php", - "src/Functional/Last.php", - "src/Functional/LastIndexOf.php", - "src/Functional/LessThan.php", - "src/Functional/LessThanOrEqual.php", - "src/Functional/LexicographicCompare.php", - "src/Functional/Map.php", - "src/Functional/Match.php", - "src/Functional/Maximum.php", - "src/Functional/Memoize.php", - "src/Functional/Minimum.php", - "src/Functional/None.php", - "src/Functional/Not.php", - "src/Functional/PartialAny.php", - "src/Functional/PartialLeft.php", - "src/Functional/PartialMethod.php", - "src/Functional/PartialRight.php", - "src/Functional/Partition.php", - "src/Functional/Pick.php", - "src/Functional/Pluck.php", - "src/Functional/Poll.php", - "src/Functional/Product.php", - "src/Functional/Ratio.php", - "src/Functional/ReduceLeft.php", - "src/Functional/ReduceRight.php", - "src/Functional/Reindex.php", - "src/Functional/Reject.php", - "src/Functional/Retry.php", - "src/Functional/Select.php", - "src/Functional/SequenceConstant.php", - "src/Functional/SequenceExponential.php", - "src/Functional/SequenceLinear.php", - "src/Functional/Some.php", - "src/Functional/Sort.php", - "src/Functional/Sum.php", - "src/Functional/SuppressError.php", - "src/Functional/Tail.php", - "src/Functional/TailRecursion.php", - "src/Functional/True.php", - "src/Functional/Truthy.php", - "src/Functional/Unique.php", - "src/Functional/With.php", - "src/Functional/Zip.php", - "src/Functional/ZipAll.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Strojny", - "email": "lstrojny@php.net", - "homepage": "http://usrportage.de" - }, - { - "name": "Max Beutel", - "email": "nash12@gmail.com" - } - ], - "description": "Functional primitives for PHP", - "keywords": [ - "functional" - ], - "time": "2017-05-08T10:17:44+00:00" - }, - { - "name": "mikey179/vfsStream", - "version": "v1.6.5", - "source": { - "type": "git", - "url": "https://github.com/mikey179/vfsStream.git", - "reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/d5fec95f541d4d71c4823bb5e30cf9b9e5b96145", - "reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Frank Kleine", - "homepage": "http://frankkleine.de/", - "role": "Developer" - } - ], - "description": "Virtual file system to mock the real file system in unit tests.", - "homepage": "http://vfs.bovigo.org/", - "time": "2017-08-01T08:02:14+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2017-10-19T19:58:43+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "72b226d2957e9e6a9ed09aeaa29cabd840d1a3b7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/72b226d2957e9e6a9ed09aeaa29cabd840d1a3b7", - "reference": "72b226d2957e9e6a9ed09aeaa29cabd840d1a3b7", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0", - "php": "~7.0" - }, - "require-dev": { - "composer/composer": "^1.3", - "ext-zip": "*", - "humbug/humbug": "dev-master", - "phpunit/phpunit": "^5.7.5" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2017-09-06T15:24:43+00:00" - }, - { - "name": "ocramius/proxy-manager", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7", - "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.1.1", - "php": "^7.1.0", - "zendframework/zend-code": "^3.1.0" - }, - "require-dev": { - "couscous/couscous": "^1.5.2", - "ext-phar": "*", - "humbug/humbug": "dev-master@DEV", - "nikic/php-parser": "^3.0.4", - "phpbench/phpbench": "^0.12.2", - "phpstan/phpstan": "^0.6.4", - "phpunit/phpunit": "^5.6.4", - "phpunit/phpunit-mock-objects": "^3.4.1", - "squizlabs/php_codesniffer": "^2.7.0" - }, - "suggest": { - "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", - "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", - "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", - "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "ProxyManager\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" - } - ], - "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", - "homepage": "https://github.com/Ocramius/ProxyManager", - "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" - ], - "time": "2017-05-04T11:12:50+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" - }, - { - "name": "phpbench/container", - "version": "1.1", - "source": { - "type": "git", - "url": "https://github.com/phpbench/container.git", - "reference": "8cd29cf58104e68b4d5cc2af5703e6235e41e7b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/container/zipball/8cd29cf58104e68b4d5cc2af5703e6235e41e7b9", - "reference": "8cd29cf58104e68b4d5cc2af5703e6235e41e7b9", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "^1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpBench\\DependencyInjection\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "Simple, configurable, service container.", - "time": "2017-07-18T12:10:10+00:00" - }, - { - "name": "phpbench/dom", - "version": "0.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpbench/dom.git", - "reference": "b135378dd0004c05ba5446aeddaf0b83339c1c4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/dom/zipball/b135378dd0004c05ba5446aeddaf0b83339c1c4c", - "reference": "b135378dd0004c05ba5446aeddaf0b83339c1c4c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": "^5.4|^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpBench\\Dom\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "DOM wrapper to simplify working with the PHP DOM implementation", - "time": "2016-02-27T12:15:56+00:00" - }, - { - "name": "phpbench/phpbench", - "version": "0.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpbench/phpbench.git", - "reference": "0dab4d0b6a699c27105d677398b2ea8046706292" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/0dab4d0b6a699c27105d677398b2ea8046706292", - "reference": "0dab4d0b6a699c27105d677398b2ea8046706292", - "shasum": "" - }, - "require": { - "beberlei/assert": "^2.4", - "doctrine/annotations": "^1.2.7", - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "lstrojny/functional-php": "1.0|^1.2.3", - "php": "^5.6|^7.0", - "phpbench/container": "~1.0", - "phpbench/dom": "~0.2.0", - "seld/jsonlint": "^1.0", - "symfony/console": "^2.4|^3.0", - "symfony/debug": "^2.4|^3.0", - "symfony/filesystem": "^2.4|^3.0", - "symfony/finder": "^2.4|^3.0", - "symfony/options-resolver": "^2.6|^3.0", - "symfony/process": "^2.1|^3.0" - }, - "require-dev": { - "doctrine/dbal": "^2.4", - "liip/rmt": "^1.2", - "padraic/phar-updater": "^1.0", - "phpunit/phpunit": "^4.6" - }, - "bin": [ - "bin/phpbench" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpBench\\": "lib/", - "PhpBench\\Extensions\\Dbal\\": "extensions/dbal/lib/", - "PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "PHP Benchmarking Framework", - "time": "2016-11-20T22:04:57+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "66465776cfc249844bde6d117abff1d22e06c2da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da", - "reference": "66465776cfc249844bde6d117abff1d22e06c2da", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-27T17:38:31+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.7.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", - "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2017-11-24T13:59:53+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "5.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "033ec97498cf530cc1be4199264cad568b19be26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/033ec97498cf530cc1be4199264cad568b19be26", - "reference": "033ec97498cf530cc1be4199264cad568b19be26", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "ext-xdebug": "^2.5", - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-xdebug": "^2.5.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2017-11-27T09:00:30+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "6.4.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/562f7dc75d46510a4ed5d16189ae57fbe45a9932", - "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.2.2", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^4.0.3", - "sebastian/comparator": "^2.0.2", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2017-11-08T11:26:09+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.0" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2017-08-03T14:08:16+00:00" - }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1174d9018191e93cb9d719edec01257fc05f8158" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1174d9018191e93cb9d719edec01257fc05f8158", - "reference": "1174d9018191e93cb9d719edec01257fc05f8158", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/diff": "^2.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-11-03T07:16:52+00:00" - }, - { - "name": "sebastian/diff", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-08-03T08:09:46+00:00" - }, - { - "name": "sebastian/environment", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2017-07-01T08:51:00+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2017-04-27T15:39:26+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", - "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "time": "2017-06-18T15:11:04+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "2.9.1", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62", - "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "bin": [ - "scripts/phpcs", - "scripts/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Fixer.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" - ], - "time": "2017-05-22T02:43:20+00:00" - }, - { - "name": "symfony/console", - "version": "v3.3.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "63cd7960a0a522c3537f6326706d7f3b8de65805" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/63cd7960a0a522c3537f6326706d7f3b8de65805", - "reference": "63cd7960a0a522c3537f6326706d7f3b8de65805", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/filesystem": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2017-11-16T15:24:32+00:00" - }, - { - "name": "symfony/debug", - "version": "v3.3.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "74557880e2846b5c84029faa96b834da37e29810" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/74557880e2846b5c84029faa96b834da37e29810", - "reference": "74557880e2846b5c84029faa96b834da37e29810", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2017-11-10T16:38:39+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v3.3.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "77db266766b54db3ee982fe51868328b887ce15c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/77db266766b54db3ee982fe51868328b887ce15c", - "reference": "77db266766b54db3ee982fe51868328b887ce15c", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2017-11-07T14:12:55+00:00" - }, - { - "name": "symfony/finder", - "version": "v3.3.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "138af5ec075d4b1d1bd19de08c38a34bb2d7d880" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/138af5ec075d4b1d1bd19de08c38a34bb2d7d880", - "reference": "138af5ec075d4b1d1bd19de08c38a34bb2d7d880", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2017-11-05T15:47:03+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v3.3.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "623d9c210a137205f7e6e98166105625402cbb2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/623d9c210a137205f7e6e98166105625402cbb2f", - "reference": "623d9c210a137205f7e6e98166105625402cbb2f", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2017-11-05T15:47:03+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2017-10-11T12:05:26+00:00" - }, - { - "name": "symfony/process", - "version": "v3.3.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "a56a3989fb762d7b19a0cf8e7693ee99a6ffb78d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a56a3989fb762d7b19a0cf8e7693ee99a6ffb78d", - "reference": "a56a3989fb762d7b19a0cf8e7693ee99a6ffb78d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2017-11-13T15:31:11+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-11-23T20:04:58+00:00" - }, - { - "name": "zendframework/zend-code", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-code.git", - "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/6b1059db5b368db769e4392c6cb6cc139e56640d", - "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d", - "shasum": "" - }, - "require": { - "php": "^7.1", - "zendframework/zend-eventmanager": "^2.6 || ^3.0" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "zendframework/zend-coding-standard": "^1.0.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "zendframework/zend-stdlib": "Zend\\Stdlib component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides facilities to generate arbitrary code using an object oriented interface", - "homepage": "https://github.com/zendframework/zend-code", - "keywords": [ - "code", - "zf2" - ], - "time": "2017-10-20T15:21:32+00:00" - }, - { - "name": "zendframework/zend-coding-standard", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-coding-standard.git", - "reference": "893316d2904e93f1c74c1384b6d7d57778299cb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-coding-standard/zipball/893316d2904e93f1c74c1384b6d7d57778299cb6", - "reference": "893316d2904e93f1c74c1384b6d7d57778299cb6", - "shasum": "" - }, - "require": { - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Zend Framework coding standard", - "keywords": [ - "Coding Standard", - "zf" - ], - "time": "2016-11-09T21:30:43+00:00" - }, - { - "name": "zendframework/zend-eventmanager", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/9d72db10ceb6e42fb92350c0cb54460da61bd79c", - "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "^6.0.7 || ^5.7.14", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0" - }, - "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://github.com/zendframework/zend-eventmanager", - "keywords": [ - "event", - "eventmanager", - "events", - "zf2" - ], - "time": "2017-07-11T19:17:22+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^5.6 || ^7.0" - }, - "platform-dev": [] -} diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md deleted file mode 100644 index 02fafcd1..00000000 --- a/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,43 +0,0 @@ -# Contributor Code of Conduct - -This project adheres to [The Code Manifesto](http://codemanifesto.com) -as its guidelines for contributor interactions. - -## The Code Manifesto - -We want to work in an ecosystem that empowers developers to reach their -potential — one that encourages growth and effective collaboration. A space that -is safe for all. - -A space such as this benefits everyone that participates in it. It encourages -new developers to enter our field. It is through discussion and collaboration -that we grow, and through growth that we improve. - -In the effort to create such a place, we hold to these values: - -1. **Discrimination limits us.** This includes discrimination on the basis of - race, gender, sexual orientation, gender identity, age, nationality, technology - and any other arbitrary exclusion of a group of people. -2. **Boundaries honor us.** Your comfort levels are not everyone’s comfort - levels. Remember that, and if brought to your attention, heed it. -3. **We are our biggest assets.** None of us were born masters of our trade. - Each of us has been helped along the way. Return that favor, when and where - you can. -4. **We are resources for the future.** As an extension of #3, share what you - know. Make yourself a resource to help those that come after you. -5. **Respect defines us.** Treat others as you wish to be treated. Make your - discussions, criticisms and debates from a position of respectfulness. Ask - yourself, is it true? Is it necessary? Is it constructive? Anything less is - unacceptable. -6. **Reactions require grace.** Angry responses are valid, but abusive language - and vindictive actions are toxic. When something happens that offends you, - handle it assertively, but be respectful. Escalate reasonably, and try to - allow the offender an opportunity to explain themselves, and possibly correct - the issue. -7. **Opinions are just that: opinions.** Each and every one of us, due to our - background and upbringing, have varying opinions. The fact of the matter, is - that is perfectly acceptable. Remember this: if you respect your own - opinions, you should respect the opinions of others. -8. **To err is human.** You might not intend it, but mistakes do happen and - contribute to build experience. Tolerate honest mistakes, and don't hesitate - to apologize if you make one yourself. diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index 193ddbd0..00000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1,189 +0,0 @@ -# CONTRIBUTING - -## RESOURCES - -If you wish to contribute to this project, please be sure to -read/subscribe to the following resources: - - - [Coding Standards](https://github.com/zendframework/zend-coding-standard) - - [Forums](https://discourse.zendframework.com/c/contributors) - - [Slack](https://zendframework-slack.herokuapp.com) - - [Code of Conduct](CODE_OF_CONDUCT.md) - -If you are working on new features or refactoring -[create a proposal](https://github.com/zendframework/zend-servicemanager/issues/new). - -## RUNNING TESTS - -To run tests: - -- Clone the repository: - - ```console - $ git clone git://github.com/zendframework/zend-servicemanager.git - $ cd zend-servicemanager - ``` - -- Install dependencies via composer: - - ```console - $ composer install - ``` - - If you don't have `composer` installed, please download it from https://getcomposer.org/download/ - -- Run the tests using the "test" command shipped in the `composer.json`: - - ```console - $ composer test - ``` - -You can turn on conditional tests with the `phpunit.xml` file. -To do so: - - - Copy `phpunit.xml.dist` file to `phpunit.xml` - - Edit `phpunit.xml` to enable any specific functionality you - want to test, as well as to provide test values to utilize. - -## Running Coding Standards Checks - -First, ensure you've installed dependencies via composer, per the previous -section on running tests. - -To run CS checks only: - -```console -$ composer cs-check -``` - -To attempt to automatically fix common CS issues: - -```console -$ composer cs-fix -``` - -If the above fixes any CS issues, please re-run the tests to ensure -they pass, and make sure you add and commit the changes after verification. - -## Recommended Workflow for Contributions - -Your first step is to establish a public repository from which we can -pull your work into the master repository. We recommend using -[GitHub](https://github.com), as that is where the component is already hosted. - -1. Setup a [GitHub account](https://github.com/), if you haven't yet -2. Fork the repository (https://github.com/zendframework/zend-servicemanager) -3. Clone the canonical repository locally and enter it. - - ```console - $ git clone git://github.com/zendframework/zend-servicemanager.git - $ cd zend-servicemanager - ``` - -4. Add a remote to your fork; substitute your GitHub username in the command - below. - - ```console - $ git remote add {username} git@github.com:{username}/zend-servicemanager.git - $ git fetch {username} - ``` - -### Keeping Up-to-Date - -Periodically, you should update your fork or personal repository to -match the canonical ZF repository. Assuming you have setup your local repository -per the instructions above, you can do the following: - - -```console -$ git checkout master -$ git fetch origin -$ git rebase origin/master -# OPTIONALLY, to keep your remote up-to-date - -$ git push {username} master:master -``` - -If you're tracking other branches -- for example, the "develop" branch, where -new feature development occurs -- you'll want to do the same operations for that -branch; simply substitute "develop" for "master". - -### Working on a patch - -We recommend you do each new feature or bugfix in a new branch. This simplifies -the task of code review as well as the task of merging your changes into the -canonical repository. - -A typical workflow will then consist of the following: - -1. Create a new local branch based off either your master or develop branch. -2. Switch to your new local branch. (This step can be combined with the - previous step with the use of `git checkout -b`.) -3. Do some work, commit, repeat as necessary. -4. Push the local branch to your remote repository. -5. Send a pull request. - -The mechanics of this process are actually quite trivial. Below, we will -create a branch for fixing an issue in the tracker. - -```console -$ git checkout -b hotfix/9295 -Switched to a new branch 'hotfix/9295' -``` - -... do some work ... - - -```console -$ git commit -``` - -... write your log message ... - - -```console -$ git push {username} hotfix/9295:hotfix/9295 -Counting objects: 38, done. -Delta compression using up to 2 threads. -Compression objects: 100% (18/18), done. -Writing objects: 100% (20/20), 8.19KiB, done. -Total 20 (delta 12), reused 0 (delta 0) -To ssh://git@github.com/{username}/zend-servicemanager.git - b5583aa..4f51698 HEAD -> master -``` - -To send a pull request, you have two options. - -If using GitHub, you can do the pull request from there. Navigate to -your repository, select the branch you just created, and then select the -"Pull Request" button in the upper right. Select the user/organization -"zendframework" (or whatever the upstream organization is) as the recipient. - -#### What branch to issue the pull request against? - -Which branch should you issue a pull request against? - -- For fixes against the stable release, issue the pull request against the - "master" branch. -- For new features, or fixes that introduce new elements to the public API (such - as new public methods or properties), issue the pull request against the - "develop" branch. - -### Branch Cleanup - -As you might imagine, if you are a frequent contributor, you'll start to -get a ton of branches both locally and on your remote. - -Once you know that your changes have been accepted to the master -repository, we suggest doing some cleanup of these branches. - -- Local branch cleanup - - ```console - $ git branch -d - ``` - -- Remote branch removal - - ```console - $ git push {username} : - ``` diff --git a/docs/ISSUE_TEMPLATE.md b/docs/ISSUE_TEMPLATE.md deleted file mode 100644 index 83f1fdd7..00000000 --- a/docs/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,19 +0,0 @@ - - [ ] I was not able to find an [open](https://github.com/zendframework/zend-servicemanager/issues?q=is%3Aopen) or [closed](https://github.com/zendframework/zend-servicemanager/issues?q=is%3Aclosed) issue matching what I'm seeing. - - [ ] This is not a question. (Questions should be asked on [slack](https://zendframework.slack.com/) ([Signup for Slack here](https://zendframework-slack.herokuapp.com/)) or our [forums](https://discourse.zendframework.com/).) - -Provide a narrative description of what you are trying to accomplish. - -### Code to reproduce the issue - - - -```php -``` - -### Expected results - - - -### Actual results - - diff --git a/docs/PULL_REQUEST_TEMPLATE.md b/docs/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index f00d90c0..00000000 --- a/docs/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,25 +0,0 @@ -Provide a narrative description of what you are trying to accomplish: - -- [ ] Are you fixing a bug? - - [ ] Detail how the bug is invoked currently. - - [ ] Detail the original, incorrect behavior. - - [ ] Detail the new, expected behavior. - - [ ] Base your feature on the `master` branch, and submit against that branch. - - [ ] Add a regression test that demonstrates the bug, and proves the fix. - - [ ] Add a `CHANGELOG.md` entry for the fix. - -- [ ] Are you creating a new feature? - - [ ] Why is the new feature needed? What purpose does it serve? - - [ ] How will users use the new feature? - - [ ] Base your feature on the `develop` branch, and submit against that branch. - - [ ] Add only one feature per pull request; split multiple features over multiple pull requests - - [ ] Add tests for the new feature. - - [ ] Add documentation for the new feature. - - [ ] Add a `CHANGELOG.md` entry for the new feature. - -- [ ] Is this related to quality assurance? - - -- [ ] Is this related to documentation? - - diff --git a/docs/SUPPORT.md b/docs/SUPPORT.md deleted file mode 100644 index 335f76c6..00000000 --- a/docs/SUPPORT.md +++ /dev/null @@ -1,25 +0,0 @@ -# Getting Support - -Zend Framework offers three support channels: - -- For real-time questions, use our - [Slack](https://zendframework-slack.herokuapp.com) -- For detailed questions (e.g., those requiring examples) use our - [forums](https://discourse.zendframework.com/c/questions/components) -- To report issues, use this repository's - [issue tracker](https://github.com/zendframework/zend-servicemanager/issues/new) - -**DO NOT** use the issue tracker to ask questions; use Slack or the forums for -that. Questions posed to the issue tracker will be closed. - -When reporting an issue, please include the following details: - -- A narrative description of what you are trying to accomplish. -- The minimum code necessary to reproduce the issue. -- The expected results of exercising that code. -- The actual results received. - -We may ask for additional details: what version of the library you are using, -and what PHP version was used to reproduce the issue. - -You may also submit a failing test case as a pull request. diff --git a/docs/book/config-abstract-factory.md b/docs/book/config-abstract-factory.md index 225ce364..fd9c2dc4 100644 --- a/docs/book/config-abstract-factory.md +++ b/docs/book/config-abstract-factory.md @@ -3,7 +3,7 @@ - Since 3.2.0 You can simplify the process of creating factories by registering -`Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory` with your service +`Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory` with your service manager instance. This allows you to define services using a configuration map, rather than having to create separate factories for each of your services. @@ -23,14 +23,14 @@ Or within configuration: ```php return [ - // zend-mvc: + // laminas-mvc: 'service_manager' => [ 'abstract_factories' => [ ConfigAbstractFactory::class, ], ], - // zend-expressive or ConfigProvider consumers: + // mezzio or ConfigProvider consumers: 'dependencies' => [ 'abstract_factories' => [ ConfigAbstractFactory::class, @@ -57,7 +57,7 @@ return [ Configuration should be provided via the `config` service, which should return an array or `ArrayObject`. `ConfigAbstractFactory` looks for a top-level key in -this service named after itself (i.e., `Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory`) +this service named after itself (i.e., `Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory`) that is an array value. Each item in the array: - Should have a key representing the service name (typically the fully @@ -69,7 +69,7 @@ that is an array value. Each item in the array: As an example: ```php -use Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory; +use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory; return [ ConfigAbstractFactory::class => [ diff --git a/docs/book/configuring-the-service-manager.md b/docs/book/configuring-the-service-manager.md index 02ba6b88..3cd1a786 100644 --- a/docs/book/configuring-the-service-manager.md +++ b/docs/book/configuring-the-service-manager.md @@ -23,7 +23,7 @@ constructor. The following keys are: Here is an example of how you could configure a service manager: ```php -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\ServiceManager; $serviceManager = new ServiceManager([ 'services' => [], @@ -38,14 +38,14 @@ $serviceManager = new ServiceManager([ ## Factories A factory is any callable or any class that implements the interface -`Zend\ServiceManager\Factory\FactoryInterface`. +`Laminas\ServiceManager\Factory\FactoryInterface`. Service manager components provide a default factory that can be used to create objects that do not have any dependencies: ```php -use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\ServiceManager; use stdClass; $serviceManager = new ServiceManager([ @@ -55,14 +55,14 @@ $serviceManager = new ServiceManager([ ]); ``` -> This mechanism replaces the `invokables` key that was used in Zend Framework 2. +> This mechanism replaces the `invokables` key that was used in Laminas. As said before, a factory can also be a callable, to create more complex objects: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\ServiceManager; use stdClass; $serviceManager = new ServiceManager([ @@ -163,7 +163,7 @@ common creation pattern. An abstract factory must be registered inside the service manager, and is checked if no factory can create an object. Each abstract factory must -implement `Zend\ServiceManager\Factory\AbstractFactoryInterface`: +implement `Laminas\ServiceManager\Factory\AbstractFactoryInterface`: ```php // In MyAbstractFactory.php: @@ -225,8 +225,8 @@ An alias can also be mapped to another alias (it will be resolved recursively). For instance: ```php -use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\ServiceManager; use stdClass; $serviceManager = new ServiceManager([ @@ -258,7 +258,7 @@ refactoring, as most modern IDEs can refactor class names specified using the ## Initializers An initializer is any callable or any class that implements the interface -`Zend\ServiceManager\Initializer\InitializerInterface`. Initializers are +`Laminas\ServiceManager\Initializer\InitializerInterface`. Initializers are executed for each service the first time they are created, and can be used to inject additional dependencies. @@ -269,7 +269,7 @@ For instance, if we'd want to automatically inject the dependency ```php use Interop\Container\ContainerInterface; use stdClass; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\ServiceManager; $serviceManager = new ServiceManager([ 'initializers' => [ @@ -284,7 +284,7 @@ $serviceManager = new ServiceManager([ ``` Alternately, you can create a class that implements -`Zend\ServiceManager\Initializer\InitializerInterface`, and pass it to the +`Laminas\ServiceManager\Initializer\InitializerInterface`, and pass it to the `initializers` array: ```php @@ -305,7 +305,7 @@ class MyInitializer implements InitializerInterface use Interop\Container\ContainerInterface; use stdClass; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\ServiceManager; $serviceManager = new ServiceManager([ 'initializers' => [ @@ -498,7 +498,7 @@ following methods: `$class`; if the latter is not provided, `$name` is used for both sides of the map. - `addAbstractFactory($factory)`, where `$factory` can be either a - `Zend\ServiceManager\Factory\AbstractFactoryInterface` instance or the name + `Laminas\ServiceManager\Factory\AbstractFactoryInterface` instance or the name of a class implementing the interface. - `addDelegator($name, $factory)`, where `$factory` can be either a callable delegator factory, or the name of a delegator factory class to use. @@ -511,7 +511,7 @@ following methods: As examples: ```php -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\ServiceManager; $serviceManager = new ServiceManager([ 'factories' => [ diff --git a/docs/book/console-tools.md b/docs/book/console-tools.md index 549d1545..d54de33a 100644 --- a/docs/book/console-tools.md +++ b/docs/book/console-tools.md @@ -1,6 +1,6 @@ # Console Tools -Starting in 3.2.0, zend-servicemanager began shipping with console tools. This +Starting in 3.2.0, laminas-servicemanager began shipping with console tools. This document details each. ## generate-deps-for-config-factory @@ -70,5 +70,5 @@ $ ./vendor/bin/generate-factory-for-class \ > "Application\\Model\\AlbumModel" > ./module/Application/src/Model/AlbumModelFactory.php ``` -The class generated implements `Zend\ServiceManager\Factory\FactoryInterface`, +The class generated implements `Laminas\ServiceManager\Factory\FactoryInterface`, and is generated within the same namespace as the originating class. diff --git a/docs/book/cookbook/factories-vs-abstract-factories.md b/docs/book/cookbook/factories-vs-abstract-factories.md index 65c80191..671101fb 100644 --- a/docs/book/cookbook/factories-vs-abstract-factories.md +++ b/docs/book/cookbook/factories-vs-abstract-factories.md @@ -1,7 +1,7 @@ # When To Use Factories vs Abstract Factories -Starting with version 3, `Zend\ServiceManager\Factory\AbstractFactoryInterface` -extends `Zend\ServiceManager\Factory\FactoryInterface`, meaning they may be used +Starting with version 3, `Laminas\ServiceManager\Factory\AbstractFactoryInterface` +extends `Laminas\ServiceManager\Factory\FactoryInterface`, meaning they may be used as either an abstract factory, or mapped to a specific service name as its factory. @@ -37,7 +37,7 @@ regularly, this boiler-plate code can be a nuisance. In such situations, one or more abstract factories — such as the [ConfigAbstractFactory](../config-abstract-factory.md), the [ReflectionBasedAbstractFactory](../reflection-abstract-factory.md), or the -[zend-mvc LazyControllerAbstractFactory](https://docs.zendframework.com/zend-mvc/cookbook/automating-controller-factories/) +[laminas-mvc LazyControllerAbstractFactory](https://docs.laminas.dev/laminas-mvc/cookbook/automating-controller-factories/) — that can handle the bulk of your needs are often worthwhile, saving you time and effort as you code. diff --git a/docs/book/delegators.md b/docs/book/delegators.md index 93991cd0..7d95071e 100644 --- a/docs/book/delegators.md +++ b/docs/book/delegators.md @@ -1,8 +1,8 @@ # Delegators -`Zend\ServiceManager` can instantiate [delegators](http://en.wikipedia.org/wiki/Delegation_pattern) +`Laminas\ServiceManager` can instantiate [delegators](http://en.wikipedia.org/wiki/Delegation_pattern) of requested services, decorating them as specified in a delegate factory -implementing the [delegator factory interface](https://github.com/zendframework/zend-servicemanager/tree/master/src/Factory/DelegatorFactoryInterface.php). +implementing the [delegator factory interface](https://github.com/laminas/laminas-servicemanager/tree/master/src/Factory/DelegatorFactoryInterface.php). The delegate pattern is useful in cases when you want to wrap a real service in a [decorator](http://en.wikipedia.org/wiki/Decorator_pattern), or generally @@ -57,7 +57,7 @@ class Buzzer The delegator class `BuzzerDelegator` has the following structure: ```php -use Zend\EventManager\EventManagerInterface; +use Laminas\EventManager\EventManagerInterface; class BuzzerDelegator extends Buzzer { @@ -83,7 +83,7 @@ To use the `BuzzerDelegator`, you can run the following code: ```php $wrappedBuzzer = new Buzzer(); -$eventManager = new Zend\EventManager\EventManager(); +$eventManager = new Laminas\EventManager\EventManager(); $eventManager->attach('buzz', function () { echo "Stare at the art!\n"; }); @@ -107,7 +107,7 @@ following: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\Factory\DelegatorFactoryInterface; +use Laminas\ServiceManager\Factory\DelegatorFactoryInterface; class BuzzerDelegatorFactory implements DelegatorFactoryInterface { @@ -127,10 +127,10 @@ You can then instruct the service manager to handle the service `buzzer` as a delegate: ```php -use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\ServiceManager; -$serviceManager = new Zend\ServiceManager\ServiceManager([ +$serviceManager = new Laminas\ServiceManager\ServiceManager([ 'factories' => [ Buzzer::class => InvokableFactory::class, ], diff --git a/docs/book/index.html b/docs/book/index.html index 9317b131..5c00f74d 100644 --- a/docs/book/index.html +++ b/docs/book/index.html @@ -1,10 +1,10 @@
-

zend-servicemanager

+

laminas-servicemanager

Factory-Driven Dependency Injection Container

-
$ composer require zendframework/zend-servicemanager
+
$ composer require laminas/laminas-servicemanager
diff --git a/docs/book/lazy-services.md b/docs/book/lazy-services.md index 9c7d76b0..dd41be16 100644 --- a/docs/book/lazy-services.md +++ b/docs/book/lazy-services.md @@ -1,6 +1,6 @@ # Lazy Services -`Zend\ServiceManager` can use [delegator factories](delegators.md) to generate +`Laminas\ServiceManager` can use [delegator factories](delegators.md) to generate "lazy" references to your services. Lazy services are [proxies](http://en.wikipedia.org/wiki/Proxy_pattern) that @@ -24,7 +24,7 @@ object is really needed. ## Setup -`Zend\ServiceManager\Proxy\LazyServiceFactory` is a [delegator factory](delegators.md) +`Laminas\ServiceManager\Proxy\LazyServiceFactory` is a [delegator factory](delegators.md) capable of generating lazy loading proxies for your services. The lazy service facilities depend on [ProxyManager](https://github.com/Ocramius/ProxyManager); @@ -63,11 +63,11 @@ instead of real services: ```php use MyApp\Buzzer; -use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\Proxy\LazyServiceFactory; -use Zend\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\Proxy\LazyServiceFactory; +use Laminas\ServiceManager\ServiceManager; -$serviceManager = new \Zend\ServiceManager\ServiceManager([ +$serviceManager = new \Laminas\ServiceManager\ServiceManager([ 'factories' => [ Buzzer::class => InvokableFactory::class, ], @@ -115,7 +115,7 @@ echo $buzzer->buzz(); ## Configuration -This is the config structure expected by `Zend\ServiceManager\Proxy\LazyServiceFactory`, +This is the config structure expected by `Laminas\ServiceManager\Proxy\LazyServiceFactory`, in the `lazy_services` key passed in the service manager configuration: ```php diff --git a/docs/book/migration.md b/docs/book/migration.md index 0b95662c..37950abf 100644 --- a/docs/book/migration.md +++ b/docs/book/migration.md @@ -1,6 +1,6 @@ # Migration Guide -The Service Manager was first introduced for Zend Framework 2.0.0. Its API +The Service Manager was first introduced for Laminas.0.0. Its API remained the same throughout that version. Version 3 is the first new major release of the Service Manager, and contains a @@ -94,22 +94,22 @@ the format listed above, for passing to either the constructor or the ### Config class -`Zend\ServiceManager\Config` has been updated to follow the changes to the +`Laminas\ServiceManager\Config` has been updated to follow the changes to the `ConfigInterface` and `ServiceManager`. This essentially means that it removes the various getter methods, and adds the `toArray()` method. ## Invokables *Invokables no longer exist,* at least, not identically to how they existed in -ZF2. +Laminas. Internally, `ServiceManager` now does the following for `invokables` entries: - If the name and value match, it creates a `factories` entry mapping the - service name to `Zend\ServiceManager\Factory\InvokableFactory`. + service name to `Laminas\ServiceManager\Factory\InvokableFactory`. - If the name and value *do not* match, it creates an `aliases` entry mapping the service name to the class name, *and* a `factories` entry mapping the class - name to `Zend\ServiceManager\Factory\InvokableFactory`. + name to `Laminas\ServiceManager\Factory\InvokableFactory`. This means that you can use your existing `invokables` configuration from version 2 in version 3. However, we recommend starting to update your @@ -124,7 +124,7 @@ if needed). > `$invokableClasses` will need to become `$factories` entries, and you will > potentially need to add `$aliases` entries. > -> As an example, consider the following, from zend-math v2.x: +> As an example, consider the following, from laminas-math v2.x: > > ```php > class AdapterPluginManager extends AbstractPluginManager @@ -140,7 +140,7 @@ if needed). > now becomes: > > ```php -> use Zend\ServiceManager\Factory\InvokableFactory; +> use Laminas\ServiceManager\Factory\InvokableFactory; > > class AdapterPluginManager extends AbstractPluginManager > { @@ -170,7 +170,7 @@ steps: As an example: ```php -use Zend\ServiceManager\Proxy\LazyServiceFactoryFactory; +use Laminas\ServiceManager\Proxy\LazyServiceFactoryFactory; $config = [ 'lazy_services' => [ @@ -215,8 +215,8 @@ lazy services, the following changes were made for v3: The above example becomes the following in v3: ```php -use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\Proxy\LazyServiceFactory; +use Laminas\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\Proxy\LazyServiceFactory; return [ 'factories' => [ @@ -266,7 +266,7 @@ service, and to allow using the provided `$options` when creating the instance. ## ServiceManager API Changes -`Zend\ServiceManager\ServiceManager` remains the primary interface with which +`Laminas\ServiceManager\ServiceManager` remains the primary interface with which developers will interact. It has the following changes in v3: - It adds a new method, `configure()`, which allows configuring all instance @@ -275,7 +275,7 @@ developers will interact. It has the following changes in v3: - Peering capabilities were removed. - Exceptions are *always* thrown when service instance creation fails or produces an error; you can no longer disable this. -- Configuration no longer requires a `Zend\ServiceManager\Config` instance. +- Configuration no longer requires a `Laminas\ServiceManager\Config` instance. `Config` can be used, but is not needed. - It adds a new method, `build()`, for creating discrete service instances. @@ -293,7 +293,7 @@ developers will interact. It has the following changes in v3: ### Constructor The constructor now accepts an array of service configuration, not a -`Zend\ServiceManager\Config` instance. +`Laminas\ServiceManager\Config` instance. ### Use `build()` for discrete instances @@ -309,7 +309,7 @@ information on in order to create discrete plugin instances with specific state. As examples: ```php -use Zend\Validator\Between; +use Laminas\Validator\Between; $between = $container->build(Between::class, [ 'min' => 5, @@ -330,7 +330,7 @@ configuration. ## Factories Internally, the `ServiceManager` now only uses the new factory interfaces -defined in the `Zend\ServiceManager\Factory` namespace. These *replace* the +defined in the `Laminas\ServiceManager\Factory` namespace. These *replace* the interfaces defined in version 2, and define completely new signatures. For migration purposes, all original interfaces were retained, and now inherit @@ -343,9 +343,9 @@ those defined in version 3.) | Version 2 Interface | Version 3 Interface | | :-------------------------------------------------------: | :-------------------------------------------------------: | -| `Zend\ServiceManager\AbstractFactoryInterface` | `Zend\ServiceManager\Factory\AbstractFactoryInterface` | -| `Zend\ServiceManager\DelegatorFactoryInterface` | `Zend\ServiceManager\Factory\DelegatorFactoryInterface` | -| `Zend\ServiceManager\FactoryInterface` | `Zend\ServiceManager\Factory\FactoryInterface` | +| `Laminas\ServiceManager\AbstractFactoryInterface` | `Laminas\ServiceManager\Factory\AbstractFactoryInterface` | +| `Laminas\ServiceManager\DelegatorFactoryInterface` | `Laminas\ServiceManager\Factory\DelegatorFactoryInterface` | +| `Laminas\ServiceManager\FactoryInterface` | `Laminas\ServiceManager\Factory\FactoryInterface` | The version 2 interfaces now extend those in version 3, but are marked **deprecated**. You can continue to use them, but will be required to update @@ -414,8 +414,8 @@ To prepare your version 2 implementation to work upon upgrade to version 3: As an example, given the following implementation from version 2: ```php -use Zend\ServiceManager\AbstractFactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\AbstractFactoryInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class LenientAbstractFactory implements AbstractFactoryInterface { @@ -437,8 +437,8 @@ them, and update the existing methods to proxy to the new methods: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\AbstractFactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\AbstractFactoryInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class LenientAbstractFactory implements AbstractFactoryInterface { @@ -475,7 +475,7 @@ From our example above, we would update the class to read as follows: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\Factory\AbstractFactoryInterface; // <-- note the change! +use Laminas\ServiceManager\Factory\AbstractFactoryInterface; // <-- note the change! class LenientAbstractFactory implements AbstractFactoryInterface { @@ -544,8 +544,8 @@ steps: Consider the following delegator factory that works for version 2: ```php -use Zend\ServiceManager\DelegatorFactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\DelegatorFactoryInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class ObserverAttachmentDelegator implements DelegatorFactoryInterface { @@ -563,8 +563,8 @@ version 3, and modify `createDelegatorWithName()` to proxy to it: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\DelegatorFactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\DelegatorFactoryInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class ObserverAttachmentDelegator implements DelegatorFactoryInterface { @@ -592,7 +592,7 @@ From our example above, we would update the class to read as follows: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\Factory\DelegatorFactoryInterface; // <-- note the change! +use Laminas\ServiceManager\Factory\DelegatorFactoryInterface; // <-- note the change! class ObserverAttachmentDelegator implements DelegatorFactoryInterface { @@ -658,8 +658,8 @@ To prepare your existing factories for version 3, take the following steps: Consider the following factory that works for version 2: ```php -use Zend\ServiceManager\FactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\FactoryInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class FooFactory implements FactoryInterface { @@ -675,8 +675,8 @@ version 3, and modify `createService()` to proxy to it: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\FactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\FactoryInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class FooFactory implements FactoryInterface { @@ -707,7 +707,7 @@ From our example above, we would update the class to read as follows: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\Factory\FactoryInterface; // <-- note the change! +use Laminas\ServiceManager\Factory\FactoryInterface; // <-- note the change! class FooFactory implements FactoryInterface { @@ -721,7 +721,7 @@ class FooFactory implements FactoryInterface > #### Many factories already work with v3! > > Within the skeleton application, tutorial, and even in commonly shipped -> modules such as those in Apigility, we have typically suggested building your +> modules such as those in Laminas API Tools, we have typically suggested building your > factories as invokable classes. If you were doing this already, your factories > will already work with version 3! @@ -735,7 +735,7 @@ class FooFactory implements FactoryInterface ### New InvokableFactory Class -`Zend\ServiceManager\Factory\InvokableFactory` is a new `FactoryInterface` +`Laminas\ServiceManager\Factory\InvokableFactory` is a new `FactoryInterface` implementation that provides the capabilities of the "invokable classes" present in version 2. It essentially instantiates and returns the requested class name; if `$options` is non-empty, it passes them directly to the constructor. @@ -760,8 +760,8 @@ the one defined in version 3.) The following changes were made to initializers: -- `Zend\ServiceManager\InitializerInterface` was renamed to - `Zend\ServiceManager\Initializer\InitializerInterface`. +- `Laminas\ServiceManager\InitializerInterface` was renamed to + `Laminas\ServiceManager\Initializer\InitializerInterface`. - The interface itself has a new signature. The previous signature was: @@ -788,8 +788,8 @@ To prepare your existing initializers for version 3, take the following steps: As an example, consider this initializer for version 2: ```php -use Zend\ServiceManager\InitializerInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\InitializerInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class FooInitializer implements InitializerInterface { @@ -809,8 +809,8 @@ version 3, and modify `initialize()` to proxy to it: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\InitializerInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\InitializerInterface; +use Laminas\ServiceManager\ServiceLocatorInterface; class FooInitializer implements InitializerInterface { @@ -840,7 +840,7 @@ From our example above, we would update the class to read as follows: ```php use Interop\Container\ContainerInterface; -use Zend\ServiceManager\Initializer\InitializerInterface; // <-- note the change! +use Laminas\ServiceManager\Initializer\InitializerInterface; // <-- note the change! class FooInitializer implements InitializerInterface { @@ -912,16 +912,16 @@ manager, if composed, in order to resolve application-level dependencies. In version 3, we define the following: -- `Zend\ServiceManager\PluginManagerInterface`, which provides the public API +- `Laminas\ServiceManager\PluginManagerInterface`, which provides the public API differences from the `ServiceLocatorInterface`. -- `Zend\ServiceManager\AbstractPluginManager`, which gives the basic +- `Laminas\ServiceManager\AbstractPluginManager`, which gives the basic capabilities for plugin managers. The class now has a (semi) *required* dependency on the application-level service manager instance, which is passed to all factories, abstract factories, etc. (More on this below.) ### PluginManagerInterface -`Zend\ServiceManager\PluginInterface` is a new interface for version 3, +`Laminas\ServiceManager\PluginInterface` is a new interface for version 3, extending `ServiceLocatorInterface` and adding one method: ```php @@ -1127,7 +1127,7 @@ Let's consider the following plugin manager geared towards version 2: ```php use RuntimeException; -use Zend\ServiceManager\AbstractPluginManager; +use Laminas\ServiceManager\AbstractPluginManager; class ObserverPluginManager extends AbstractPluginManager { @@ -1165,9 +1165,9 @@ Doing so, we get the following result: namespace MyNamespace; use RuntimeException; -use Zend\ServiceManager\AbstractPluginManager; -use Zend\ServiceManager\Exception\InvalidServiceException; -use Zend\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\AbstractPluginManager; +use Laminas\ServiceManager\Exception\InvalidServiceException; +use Laminas\ServiceManager\Factory\InvokableFactory; class ObserverPluginManager extends AbstractPluginManager { @@ -1235,7 +1235,7 @@ The above will now work in both version 2 and version 3. ### Migration testing To test your changes, create a new `MigrationTest` case that uses -`Zend\ServiceManager\Test\CommonPluginManagerTrait`. Override +`Laminas\ServiceManager\Test\CommonPluginManagerTrait`. Override `getPluginManager()` to return an instance of your plugin manager, and override `getV2InvalidPluginException()` to return the classname of the exception your `validatePlugin()` method throws: @@ -1245,8 +1245,8 @@ use MyNamespace\ObserverInterface; use MyNamespace\ObserverPluginManager; use MyNamespace\Exception\RuntimeException; use PHPUnit_Framework_TestCase as TestCase; -use Zend\ServiceManager\ServiceManager; -use Zend\ServiceManager\Test\CommonPluginManagerTrait; +use Laminas\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Test\CommonPluginManagerTrait; class MigrationTest extends TestCase { @@ -1291,8 +1291,8 @@ After you migrate to version 3, you can clean up your plugin manager: Performing these steps on the above, we get: ```php -use Zend\ServiceManager\AbstractPluginManager; -use Zend\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\AbstractPluginManager; +use Laminas\ServiceManager\Factory\InvokableFactory; class ObserverPluginManager extends AbstractPluginManager { @@ -1314,10 +1314,10 @@ class ObserverPluginManager extends AbstractPluginManager ## DI Namespace -**The `Zend\ServiceManager\Di` namespace has been removed.** +**The `Laminas\ServiceManager\Di` namespace has been removed.** -The `Zend\Di` component is not actively maintained, and has been largely -deprecated during the ZF2 lifecycle in favor of the Service Manager. Its usage +The `Laminas\Di` component is not actively maintained, and has been largely +deprecated during the Laminas lifecycle in favor of the Service Manager. Its usage as an abstract factory is problematic and error prone when used in conjunction with the Service Manager; as such, we've removed it for the initial v3 release. @@ -1327,16 +1327,16 @@ We may re-introduce it via a separate component in the future. The following interfaces, traits, and classes were *removed*: -- `Zend\ServiceManager\MutableCreationOptionsInterface`; this was previously +- `Laminas\ServiceManager\MutableCreationOptionsInterface`; this was previously used by the `AbstractPluginManager`, and is no longer required as we ship a separate `PluginManagerInterface`, and because the functionality is encompassed by the `build()` method. -- `Zend\ServiceManager\MutableCreationOptionsTrait` -- `Zend\ServiceManager\Proxy\LazyServiceFactoryFactory`; its capabilities were +- `Laminas\ServiceManager\MutableCreationOptionsTrait` +- `Laminas\ServiceManager\Proxy\LazyServiceFactoryFactory`; its capabilities were moved directly into the `ServiceManager`. -- `Zend\ServiceManager\ServiceLocatorAwareInterface` -- `Zend\ServiceManager\ServiceLocatorAwareTrait` -- `Zend\ServiceManager\ServiceManagerAwareInterface` +- `Laminas\ServiceManager\ServiceLocatorAwareInterface` +- `Laminas\ServiceManager\ServiceLocatorAwareTrait` +- `Laminas\ServiceManager\ServiceManagerAwareInterface` The `ServiceLocatorAware` and `ServiceManagerAware` interfaces and traits were too often abused under v2, and represent the antithesis of the purpose of the @@ -1345,11 +1345,11 @@ container should never be composed by objects. The following classes and interfaces have changes: -- `Zend\ServiceManager\Proxy\LazyServiceFactory` is now marked `final`, and - implements `Zend\ServiceManager\Proxy\DelegatorFactoryInterface`. Its +- `Laminas\ServiceManager\Proxy\LazyServiceFactory` is now marked `final`, and + implements `Laminas\ServiceManager\Proxy\DelegatorFactoryInterface`. Its dependencies and capabilities remain the same. -- `Zend\ServiceManager\ConfigInterface` now is expected to *return* the modified +- `Laminas\ServiceManager\ConfigInterface` now is expected to *return* the modified `ServiceManager` instance. -- `Zend\ServiceManager\Config` was updated to follow the changes to +- `Laminas\ServiceManager\Config` was updated to follow the changes to `ConfigInterface` and `ServiceManager`, and now returns the updated `ServiceManager` instance from `configureServiceManager()`. diff --git a/docs/book/plugin-managers.md b/docs/book/plugin-managers.md index dbceae30..5ded5d69 100644 --- a/docs/book/plugin-managers.md +++ b/docs/book/plugin-managers.md @@ -7,14 +7,14 @@ Because a plugin manager extends a service manager, it works the same and can be configured similarly. It provides a separation of concerns (it will be used in specific contexts), and provides additional instance validation. -Zend Framework components extensively use plugin managers to create services +Laminas components extensively use plugin managers to create services that share common functionalities. For instance, all validator services are specified inside a specialized `ValidatorPluginManager`. ## Creating a plugin manager To create a plugin manager, you first need to create a new class that extends -`Zend\ServiceManager\AbstractPluginManager`: +`Laminas\ServiceManager\AbstractPluginManager`: ```php class ValidatorPluginManager extends AbstractPluginManager @@ -25,7 +25,7 @@ class ValidatorPluginManager extends AbstractPluginManager The `$instanceOf` variable specifies a class/interface type that all instances retrieved from the plugin manager must fulfill. If an instance created by the -plugin manager does not match, a `Zend\ServiceManager\Exception\InvalidServiceException` +plugin manager does not match, a `Laminas\ServiceManager\Exception\InvalidServiceException` exception will be thrown. Most of the time, this shortcut is enough. However if you have more complex diff --git a/docs/book/psr-11.md b/docs/book/psr-11.md index 194aa9e9..ab7a22ef 100644 --- a/docs/book/psr-11.md +++ b/docs/book/psr-11.md @@ -3,11 +3,11 @@ [container-interop/container-interop 1.2.0](https://github.com/container-interop/container-interop/releases/tag/1.2.0) modifies its codebase to extend interfaces from [psr/container](https://github.com/php-fig/container) (the official interfaces for [PSR-11](http://www.php-fig.org/psr/psr-11/)). If -you are on a pre-3.3.0 version of zend-servicemanager, update your project, and -receive container-interop 1.2, then zend-servicemanager can already act as a +you are on a pre-3.3.0 version of laminas-servicemanager, update your project, and +receive container-interop 1.2, then laminas-servicemanager can already act as a PSR-11 provider! -zend-servicemanager 3.3.0 requires at least version 1.2 of container-interop, +laminas-servicemanager 3.3.0 requires at least version 1.2 of container-interop, and _also_ requires psr/container 1.0 to explicitly signal that it is a PSR-11 provider, and to allow removal of the container-interop dependency later. @@ -17,7 +17,7 @@ interfaces, which will require changes to any implementations you have. In the meantime, you can [duck-type](https://en.wikipedia.org/wiki/Duck_typing) the following factory types: -- `Zend\ServiceManager\Factory\FactoryInterface`: use a callable with the +- `Laminas\ServiceManager\Factory\FactoryInterface`: use a callable with the following signature: ```php @@ -28,7 +28,7 @@ following factory types: ) ``` -- `Zend\ServiceManager\Factory\DelegatorFactoryInterface`: use a callable with +- `Laminas\ServiceManager\Factory\DelegatorFactoryInterface`: use a callable with the following signature: ```php @@ -40,7 +40,7 @@ following factory types: ) ``` -- `Zend\ServiceManager\Initializer\InitializerInterface`: use a callable with +- `Laminas\ServiceManager\Initializer\InitializerInterface`: use a callable with the following signature: ```php @@ -54,5 +54,5 @@ Abstract factories _can not_ be duck typed, due to the additional `canCreate()` method. You can also leave your factories as-is for now, and update them once -zend-servicemanager v4.0 is released, at which time we will be providing tooling +laminas-servicemanager v4.0 is released, at which time we will be providing tooling to help migrate your factories to PSR-11. diff --git a/docs/book/quick-start.md b/docs/book/quick-start.md index 95e157c2..c9246dad 100644 --- a/docs/book/quick-start.md +++ b/docs/book/quick-start.md @@ -9,13 +9,13 @@ interfaces, providing interoperability with other implementations. The following is a "quick start" tutorial intended to get you up and running with the most common features of the Service manager. -## 1. Install Zend Service Manager +## 1. Install Laminas Service Manager If you haven't already, [install Composer](https://getcomposer.org). Once you have, you can install the service manager: ```bash -$ composer require zendframework/zend-servicemanager +$ composer require laminas/laminas-servicemanager ``` ## 2. Configuring a service manager @@ -24,8 +24,8 @@ You can now create and configure a service manager. The service manager constructor accepts a simple array: ```php -use Zend\ServiceManager\ServiceManager; -use Zend\ServiceManager\Factory\InvokableFactory; +use Laminas\ServiceManager\ServiceManager; +use Laminas\ServiceManager\Factory\InvokableFactory; use stdClass; $serviceManager = new ServiceManager([ diff --git a/docs/book/reflection-abstract-factory.md b/docs/book/reflection-abstract-factory.md index a63def4d..ffae902f 100644 --- a/docs/book/reflection-abstract-factory.md +++ b/docs/book/reflection-abstract-factory.md @@ -6,13 +6,13 @@ Writing a factory class for each and every service that has dependencies can be tedious, particularly in early development as you are still sorting out dependencies. -zend-servicemanager ships with `Zend\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory`, +laminas-servicemanager ships with `Laminas\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory`, which provides a reflection-based approach to instantiation, resolving constructor dependencies to the relevant services. The factory may be used as either an abstract factory, or mapped to specific service names as a factory: ```php -use Zend\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory; +use Laminas\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory; return [ /* ... */ @@ -51,19 +51,19 @@ to do so. ## Handling well-known services -Some services provided by Zend Framework components do not have +Some services provided by Laminas components do not have entries based on their class name (for historical reasons). As examples: -- `Zend\Console\Adapter\AdapterInterface` maps to the service name `ConsoleAdapter`, -- `Zend\Filter\FilterPluginManager` maps to the service name `FilterManager`, -- `Zend\Hydrator\HydratorPluginManager` maps to the service name `HydratorManager`, -- `Zend\InputFilter\InputFilterPluginManager` maps to the service name `InputFilterManager`, -- `Zend\Log\FilterPluginManager` maps to the service name `LogFilterManager`, -- `Zend\Log\FormatterPluginManager` maps to the service name `LogFormatterManager`, -- `Zend\Log\ProcessorPluginManager` maps to the service name `LogProcessorManager`, -- `Zend\Log\WriterPluginManager` maps to the service name `LogWriterManager`, -- `Zend\Serializer\AdapterPluginManager` maps to the service name `SerializerAdapterManager`, -- `Zend\Validator\ValidatorPluginManager` maps to the service name `ValidatorManager`, +- `Laminas\Console\Adapter\AdapterInterface` maps to the service name `ConsoleAdapter`, +- `Laminas\Filter\FilterPluginManager` maps to the service name `FilterManager`, +- `Laminas\Hydrator\HydratorPluginManager` maps to the service name `HydratorManager`, +- `Laminas\InputFilter\InputFilterPluginManager` maps to the service name `InputFilterManager`, +- `Laminas\Log\FilterPluginManager` maps to the service name `LogFilterManager`, +- `Laminas\Log\FormatterPluginManager` maps to the service name `LogFormatterManager`, +- `Laminas\Log\ProcessorPluginManager` maps to the service name `LogProcessorManager`, +- `Laminas\Log\WriterPluginManager` maps to the service name `LogWriterManager`, +- `Laminas\Serializer\AdapterPluginManager` maps to the service name `SerializerAdapterManager`, +- `Laminas\Validator\ValidatorPluginManager` maps to the service name `ValidatorManager`, To allow the `ReflectionBasedAbstractFactory` to find these, you have two options. @@ -72,16 +72,16 @@ The first is to pass an array of mappings via the constructor: ```php $reflectionFactory = new ReflectionBasedAbstractFactory([ - \Zend\Console\Adapter\AdapterInterface::class => 'ConsoleAdapter', - \Zend\Filter\FilterPluginManager::class => 'FilterManager', - \Zend\Hydrator\HydratorPluginManager::class => 'HydratorManager', - \Zend\InputFilter\InputFilterPluginManager::class => 'InputFilterManager', - \Zend\Log\FilterPluginManager::class => 'LogFilterManager', - \Zend\Log\FormatterPluginManager::class => 'LogFormatterManager', - \Zend\Log\ProcessorPluginManager::class => 'LogProcessorManager', - \Zend\Log\WriterPluginManager::class => 'LogWriterManager', - \Zend\Serializer\AdapterPluginManager::class => 'SerializerAdapterManager', - \Zend\Validator\ValidatorPluginManager::class => 'ValidatorManager', + \Laminas\Console\Adapter\AdapterInterface::class => 'ConsoleAdapter', + \Laminas\Filter\FilterPluginManager::class => 'FilterManager', + \Laminas\Hydrator\HydratorPluginManager::class => 'HydratorManager', + \Laminas\InputFilter\InputFilterPluginManager::class => 'InputFilterManager', + \Laminas\Log\FilterPluginManager::class => 'LogFilterManager', + \Laminas\Log\FormatterPluginManager::class => 'LogFormatterManager', + \Laminas\Log\ProcessorPluginManager::class => 'LogProcessorManager', + \Laminas\Log\WriterPluginManager::class => 'LogWriterManager', + \Laminas\Serializer\AdapterPluginManager::class => 'SerializerAdapterManager', + \Laminas\Validator\ValidatorPluginManager::class => 'ValidatorManager', ]); ``` @@ -89,13 +89,13 @@ This can be done either in your configuration file (which could be problematic when considering serialization for caching), or during an early phase of application bootstrapping. -For instance, with zend-mvc, this might be in your `Application` module's +For instance, with laminas-mvc, this might be in your `Application` module's bootstrap listener: ```php namespace Application -use Zend\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory; +use Laminas\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory; class Module { @@ -111,7 +111,7 @@ class Module } ``` -For Expressive, it could be part of your `config/container.php` definition: +For Mezzio, it could be part of your `config/container.php` definition: ```php $container = new ServiceManager(); @@ -128,21 +128,21 @@ The second approach is to extend the class, and define the map in the ```php namespace Application; -use Zend\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory; +use Laminas\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory; class ReflectionAbstractFactory extends ReflectionBasedAbstractFactory { protected $aliases = [ - \Zend\Console\Adapter\AdapterInterface::class => 'ConsoleAdapter', - \Zend\Filter\FilterPluginManager::class => 'FilterManager', - \Zend\Hydrator\HydratorPluginManager::class => 'HydratorManager', - \Zend\InputFilter\InputFilterPluginManager::class => 'InputFilterManager', - \Zend\Log\FilterPluginManager::class => 'LogFilterManager', - \Zend\Log\FormatterPluginManager::class => 'LogFormatterManager', - \Zend\Log\ProcessorPluginManager::class => 'LogProcessorManager', - \Zend\Log\WriterPluginManager::class => 'LogWriterManager', - \Zend\Serializer\AdapterPluginManager::class => 'SerializerAdapterManager', - \Zend\Validator\ValidatorPluginManager::class => 'ValidatorManager', + \Laminas\Console\Adapter\AdapterInterface::class => 'ConsoleAdapter', + \Laminas\Filter\FilterPluginManager::class => 'FilterManager', + \Laminas\Hydrator\HydratorPluginManager::class => 'HydratorManager', + \Laminas\InputFilter\InputFilterPluginManager::class => 'InputFilterManager', + \Laminas\Log\FilterPluginManager::class => 'LogFilterManager', + \Laminas\Log\FormatterPluginManager::class => 'LogFormatterManager', + \Laminas\Log\ProcessorPluginManager::class => 'LogProcessorManager', + \Laminas\Log\WriterPluginManager::class => 'LogWriterManager', + \Laminas\Serializer\AdapterPluginManager::class => 'SerializerAdapterManager', + \Laminas\Validator\ValidatorPluginManager::class => 'ValidatorManager', ]; } ``` @@ -163,4 +163,4 @@ which gives slightly more flexibility in terms of mapping dependencies: ## References -This feature was inspired by [a blog post by Alexandre Lemaire](http://circlical.com/blog/2016/3/9/preparing-for-zend-f). +This feature was inspired by [a blog post by Alexandre Lemaire](http://circlical.com/blog/2016/3/9/preparing-for-laminas-f). diff --git a/mkdocs.yml b/mkdocs.yml index c08cda87..34099b6d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ docs_dir: docs/book site_dir: docs/html -pages: +nav: - index.md - 'Quick Start': quick-start.md - Reference: @@ -15,7 +15,6 @@ pages: - Cookbook: - 'Factories vs Abstract Factories': cookbook/factories-vs-abstract-factories.md - 'Migration Guide': migration.md -site_name: zend-servicemanager -site_description: 'zend-servicemanager: factory-driven dependency injection container' -repo_url: 'https://github.com/zendframework/zend-servicemanager' -copyright: 'Copyright (c) 2005-2017 Zend Technologies USA Inc.' +site_name: laminas-servicemanager +site_description: 'laminas-servicemanager: factory-driven dependency injection container' +repo_url: 'https://github.com/laminas/laminas-servicemanager' diff --git a/phpcs.xml b/phpcs.xml index 263492ed..854e3d69 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -1,6 +1,6 @@ - - + + bin diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 1c78e74d..e614d472 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -4,7 +4,7 @@ bootstrap="./vendor/autoload.php" colors="true"> - + ./test/ diff --git a/src/AbstractFactory/ConfigAbstractFactory.php b/src/AbstractFactory/ConfigAbstractFactory.php index 27882ccb..237d7365 100644 --- a/src/AbstractFactory/ConfigAbstractFactory.php +++ b/src/AbstractFactory/ConfigAbstractFactory.php @@ -1,15 +1,16 @@ * [ - * \Zend\Filter\FilterPluginManager::class => 'FilterManager', - * \Zend\Validator\ValidatorPluginManager::class => 'ValidatorManager', + * \Laminas\Filter\FilterPluginManager::class => 'FilterManager', + * \Laminas\Validator\ValidatorPluginManager::class => 'ValidatorManager', * ] * * diff --git a/src/AbstractFactoryInterface.php b/src/AbstractFactoryInterface.php index b367f72b..c378e720 100644 --- a/src/AbstractFactoryInterface.php +++ b/src/AbstractFactoryInterface.php @@ -1,16 +1,17 @@ container->has(TestAsset\SampleInterface::class)->willReturn(false); + $this->container->has(\ZendTest\ServiceManager\AbstractFactory\TestAsset\SampleInterface::class)->willReturn(false); $this->container->has('config')->willReturn(false); $factory = new ReflectionBasedAbstractFactory(); $this->expectException(ServiceNotFoundException::class); @@ -163,6 +165,7 @@ public function testFactoryWillUseDefaultValueForTypeHintedArgument() { $this->container->has('config')->willReturn(false); $this->container->has(ArrayAccess::class)->willReturn(false); + $this->container->has(\ZendTest\ServiceManager\AbstractFactory\ArrayAccess::class)->willReturn(false); $factory = new ReflectionBasedAbstractFactory(); $instance = $factory( $this->container->reveal(), diff --git a/test/AbstractFactory/TestAsset/ClassAcceptingConfigToConstructor.php b/test/AbstractFactory/TestAsset/ClassAcceptingConfigToConstructor.php index f4b1b8cf..1830717f 100644 --- a/test/AbstractFactory/TestAsset/ClassAcceptingConfigToConstructor.php +++ b/test/AbstractFactory/TestAsset/ClassAcceptingConfigToConstructor.php @@ -1,11 +1,12 @@ proxyDir = sys_get_temp_dir() . '/zend-servicemanager-proxy'; + $this->proxyDir = sys_get_temp_dir() . '/laminas-servicemanager-proxy'; if (! is_dir($this->proxyDir)) { mkdir($this->proxyDir); } @@ -92,7 +93,7 @@ public function assertProxyFileWritten($message = '') } /** - * @covers \Zend\ServiceManager\ServiceManager::createLazyServiceDelegatorFactory + * @covers \Laminas\ServiceManager\ServiceManager::createLazyServiceDelegatorFactory */ public function testCanUseLazyServiceFactoryFactoryToCreateLazyServiceFactoryToActAsDelegatorToCreateLazyService() { @@ -146,7 +147,7 @@ public function testCanUseLazyServiceFactoryFactoryToCreateLazyServiceFactoryToA } /** - * @covers \Zend\ServiceManager\ServiceManager::createLazyServiceDelegatorFactory + * @covers \Laminas\ServiceManager\ServiceManager::createLazyServiceDelegatorFactory */ public function testMissingClassMapRaisesExceptionOnAttemptToRetrieveLazyService() { @@ -168,7 +169,7 @@ public function testMissingClassMapRaisesExceptionOnAttemptToRetrieveLazyService } /** - * @covers \Zend\ServiceManager\ServiceManager::createLazyServiceDelegatorFactory + * @covers \Laminas\ServiceManager\ServiceManager::createLazyServiceDelegatorFactory */ public function testWillNotGenerateProxyClassFilesByDefault() { diff --git a/test/Proxy/LazyServiceFactoryTest.php b/test/Proxy/LazyServiceFactoryTest.php index 7f430865..4d3d4151 100644 --- a/test/Proxy/LazyServiceFactoryTest.php +++ b/test/Proxy/LazyServiceFactoryTest.php @@ -1,24 +1,25 @@ [ - stdClass::class => 'ZendTest\ServiceManager\ServiceManagerTest::sampleFactory', + stdClass::class => 'LaminasTest\ServiceManager\ServiceManagerTest::sampleFactory', ] ]; $serviceManager = new SimpleServiceManager($config); diff --git a/test/TestAsset/CallTimesAbstractFactory.php b/test/TestAsset/CallTimesAbstractFactory.php index 2a09bdf1..1129d3da 100644 --- a/test/TestAsset/CallTimesAbstractFactory.php +++ b/test/TestAsset/CallTimesAbstractFactory.php @@ -1,14 +1,15 @@ InvokableObject::class, + + // Legacy Zend Framework aliases + \ZendTest\ServiceManager\TestAsset\InvokableObject::class => InvokableObject::class, + + // v2 normalized FQCNs + 'zendtestservicemanagertestassetinvokableobject' => InvokableObject::class, ]; protected $factories = [ InvokableObject::class => InvokableFactory::class, // Legacy (v2) due to alias resolution - 'zendtestservicemanagertestassetinvokableobject' => InvokableFactory::class, + 'laminastestservicemanagertestassetinvokableobject' => InvokableFactory::class, ]; protected $instanceOf = InvokableObject::class; diff --git a/test/TestAsset/config/invalid.config.php b/test/TestAsset/config/invalid.config.php index 4a2ff946..81121182 100644 --- a/test/TestAsset/config/invalid.config.php +++ b/test/TestAsset/config/invalid.config.php @@ -1,8 +1,9 @@ get(\ZendTest\ServiceManager\TestAsset\SimpleDependencyObject::class), - $container->get(\ZendTest\ServiceManager\TestAsset\SecondComplexDependencyObject::class) + $container->get(\LaminasTest\ServiceManager\TestAsset\SimpleDependencyObject::class), + $container->get(\LaminasTest\ServiceManager\TestAsset\SecondComplexDependencyObject::class) ); } } diff --git a/test/TestAsset/factories/InvokableObject.php b/test/TestAsset/factories/InvokableObject.php index 5e3ea439..ce2eaf66 100644 --- a/test/TestAsset/factories/InvokableObject.php +++ b/test/TestAsset/factories/InvokableObject.php @@ -1,10 +1,10 @@ get(\ZendTest\ServiceManager\TestAsset\InvokableObject::class)); + return new SimpleDependencyObject($container->get(\LaminasTest\ServiceManager\TestAsset\InvokableObject::class)); } } diff --git a/test/Tool/ConfigDumperCommandTest.php b/test/Tool/ConfigDumperCommandTest.php index 8e690de5..b263ca9a 100644 --- a/test/Tool/ConfigDumperCommandTest.php +++ b/test/Tool/ConfigDumperCommandTest.php @@ -1,23 +1,24 @@ dumper->dumpConfigFile($config); $this->assertContains( - '<' . "?php\n/**\n * This file generated by Zend\ServiceManager\Tool\ConfigDumper.\n", + '<' . "?php\n\n/**\n * This file generated by Laminas\ServiceManager\Tool\ConfigDumper.\n", $formatted ); diff --git a/test/Tool/FactoryCreatorCommandTest.php b/test/Tool/FactoryCreatorCommandTest.php index c7332462..e05c8396 100644 --- a/test/Tool/FactoryCreatorCommandTest.php +++ b/test/Tool/FactoryCreatorCommandTest.php @@ -1,19 +1,20 @@