mxc-commons / mxc-servicemanager
Zend ServiceManager 3.2 refactored for much better performance.
Requires
- php: ^7.1
- container-interop/container-interop: ^1.2
- psr/container: ^1.0
- zendframework/zend-stdlib: ^3.2
Requires (Dev)
- mikey179/vfsstream: ^1.6.5
- ocramius/proxy-manager: ^2.2.0
- phpbench/phpbench: 0.15.0
- phpunit/phpunit: ^6.5.7
- zendframework/zend-coding-standard: ~1.0.0
Suggests
- ocramius/proxy-manager: ProxyManager ^2.2.0 to handle lazy initialization of services
- zendframework/zend-stdlib: zend-stdlib ^2.7.7 | ^3.1 if you wish to use the MergeReplaceKey or MergeRemoveKey features in Config instances
Provides
Replaces
README
Version
Release 1.1 created on 2018-12-10 by Frank Hein, maxence operations GmbH, Germany.
This version is based on Zend Service Manager 3.x and is backwards compatible with it.
Introduction
mxc-servicemanager is a component compatible to zend-servicemanager 3.x. It can be used to substitute zend-servicemanager 3.x versions. Different from zend-servicemanager this component does not support PHP 5.6.
For mxc-servicemanager we refactored several parts of zend-servicemanager for better performance. This includes configuration and setup, factory caching and service resolution.
mxc-servicemanager will be kept compatible to zend-servicemanager. Changes to master and develop branches of zend-servicemanager will get merged into mxc-servicemanager as appropriate and applicable.
- File issues, ask and discuss at the issues section of mxc-servicemanager
- Online documentation of zend-servicemanager
Features
- Speed up service manager configuration via configure()
- Speed up service manager configuration via the APIs:
- addAbstractFactory
- addDelegator
- addInitializer
- mapLazyService
- setAlias
- setFactory
- setInvokableClass
- setService
- setShared
- Speed up service delivery for
- aliases
- delegators
- invokables
- abstract factories
- Speed up service manager assets
- ConfigAbstractFactory
- Simplified configuration for common cases
- Comprehensive benchmark suite
Installation
To install mxc-servicemanager:
-
Remove dependencies to zend-servicemanager from your project.
-
Add a dependency to mxc-servicemanager to your composer.json
"require": { "mxc-commons/mxc-servicemanager": "^1.1" }
-
Configure PSR-4 compliant autoloading of the namespace Zend\ServiceManager. If you use the recommended way of composer based autoloading, add this configuration to your composer.json
"autoload": { "psr-4": { "Zend\\ServiceManager\\": "src/" } },
-
Run composer update
Now you can use Zend\ServiceManager the way you are used to use it. zend-servicemanager is transparently replaced by mxc-servicemanager. mxc-servicemanager
instances get created by new Zend\ServiceManager\ServiceManager
as before.
License
mxc-servicemanager is provided under the New BSD License. See LICENSE.md
.
Discussion
Platform for discussion of all things related to this fork is the issues section of mxc-commons/mxc-servicemanager.
Status
Please refer to the CHANGELOG.md
for a list of changes and enhancements. A comprehensive benchmark comparison is included for
each version. A brief description of the benchmark tests is provided in BENCHMARKS.md
.
Credits
This work is based on zend-servicemanager, which is part of the Zend Framework. This work would not have been possible without the work of Matthew Weier O'Phinney (@weierophinney) and the numerous people contributing to Zend Framework.
Unit tests are done using Sebastian Bergmann's PHPUnit unit testing framework (@sebastianbergmann).
Benchmarks are done using Daniel Leech's PHPBench benchmark framework (@dantleech).