stratadox/instantiator

v0.2 2020-11-12 12:16 UTC

README

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version License

Lightweight instantiator.

Installation

Install using composer require stratadox/instantiator

What is this?

The Instantiator module provides a most simplistic way of producing empty instances.

An Instantiator is configured to produce instances of a specific class. In this way it differs from most other instantiator packages, which usually specify the class to instantiate as method parameter.

Basic usage

<?php
use Stratadox\Instantiator\ObjectInstantiator;

$provideFoo = ObjectInstantiator::forThe(Foo::class);

assert($provideFoo->instance() instanceof Foo);
assert(Foo::class === $provideFoo->class());

How does it work?

The ObjectInstantiator class basically just extends ReflectionClass in order to alias its newInstanceWithoutConstructor method. In cases where this instantiation method fails, for instance when a final class inherits from an internal class, deserialization is used instead.

Alternatively, this module includes a PredefinedInstanceProvider. This one isn't really an instantiator, but rather an iterator, but that does not stop it from implementing the Instantiator interface.