In typical application, you will end up with multiple factories that simply pull some
services and create new object. ReflectionFactory can take care of this use case
for you - it uses Reflection to scan parameter types in constructor and instantiates
new object based on this information.

Installation

Install this package using Composer:

$ composer require mtymek/blast-reflection-factory

Usage

After installing this package, all you have to do is to tell ServiceManager
to use ReflectionFactory to create your services.

If you are using Zend Expressive Skeleton Application, then config/container.php would
be a good place to enable this cache.

Warming-up cache

Cache file is automatically updated when a service is pulled from the container for the first
time. This can lead to race conditions when your application is under heavy load. In order to
avoid it, cache should be warmed up during deployment phase.
Easiest way to do it is to go through all configured factories, pulling every serice from
the container.

Limitations

ReflectionFactory is only meant to be used in typical scenario, when all dependencies
are injected using constructor. All of them must be type-hinted - otherwise ReflectionFactory
won't be able to resolve them.
Despite this limitation, this library should still let you reduce number of factories you
have to write.