Basic Usage
Registering and Fetching Services
This example shows how to register and retrieve services using the container helper.
use FastForward\Container\ServiceProvider\ArrayServiceProvider;
use function FastForward\Container\container;
$provider = new ArrayServiceProvider([
'logger' => fn() => new Monolog\Logger('app'),
'pdo' => fn() => new PDO('sqlite::memory:'),
]);
$container = container($provider);
$logger = $container->get('logger');
$pdo = $container->get('pdo');
Using Configuration to Register Providers
You can use a configuration object to register providers dynamically:
use FastForward\Config\ArrayConfig;
use function FastForward\Container\container;
use FastForward\Container\ServiceProvider\ArrayServiceProvider;
$config = new ArrayConfig([
FastForward\Container\ContainerInterface::class => [
new ArrayServiceProvider([
'cache' => fn() => new MyCache(),
]),
],
]);
$container = container($config);
$cache = $container->get('cache');
Autowiring a Service (using PHP-DI)
The container supports autowiring for classes with type-hinted dependencies:
use function FastForward\Container\container;
class MyService {
public function __construct(MyDependency $dep) { /* ... */ }
}
$container = container();
$service = $container->get(MyService::class); // MyDependency is autowired