mxc-commons/mxc-servicemanager

Zend ServiceManager 3.2 refactored for much better performance.

1.1.0 2018-12-10 18:15 UTC

README

master: Build Status Coverage Status develop: Build Status Coverage Status

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.

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:

  1. Remove dependencies to zend-servicemanager from your project.

  2. Add a dependency to mxc-servicemanager to your composer.json

    "require": {
        "mxc-commons/mxc-servicemanager": "^1.1"
    }
  3. 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/"
        }
    },
  4. 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).