Using Factories

Using CallableFactory for Dependency Injection

use FastForward\Container\Factory\CallableFactory;

$factory = new CallableFactory(fn($container) => new Mailer($container->get('logger')));
$mailer = $factory($container);

Aliasing Services with AliasFactory

use FastForward\Container\Factory\AliasFactory;

$factory = new AliasFactory('mailer');
$sameMailer = $factory($container); // Returns the same as $container->get('mailer')

Invoking Classes with InvokableFactory

use FastForward\Container\Factory\InvokableFactory;

$factory = new InvokableFactory(MyService::class, 'arg1', 'arg2');
$service = $factory($container);

Calling Static Methods with MethodFactory

use FastForward\Container\Factory\MethodFactory;

$factory = new MethodFactory(MyService::class, 'build', 'arg1');
$service = $factory($container);

Wrapping Existing Instances with ServiceFactory

use FastForward\Container\Factory\ServiceFactory;

$instance = new MyService();
$factory = new ServiceFactory($instance);
$service = $factory($container); // Always returns $instance