p7v/illuminate-container-slim-bridge

Illuminate (Laravel) Container integration in Slim

1.1.2 2022-01-03 00:05 UTC

README

Packagist Version

This package configures Slim to work with the Illuminate container. By default, container supports autowiring.

Install

composer require p7v/illuminate-container-slim-bridge

Minimal setup

Instead of using the official Slim\Factory\AppFactory, use Bridge class to create your application:

<?php
require 'vendor/autoload.php';

$app = \P7v\IlluminateContainerSlim\Bridge::create();

Setup with preconfigured container

If you need to configure the container beforehand, pass your configured container to the method:

<?php
require 'vendor/autoload.php';

$container = new \Illuminate\Container\Container();

/** Configure your container */

$app = \P7v\IlluminateContainerSlim\Bridge::create($container);

Configure container using service providers

You can use service providers for container configuration. Your service provider has to extend P7v\IlluminateContainerSlim\ServiceProvider. Then provide list of names of your service providers to usingProviders method in Bridge.

class AppServiceProvider extends \P7v\IlluminateContainerSlim\ServiceProvider
{
    public function register(): void
    {
        $this->bind('key', function () {
            return new stdClass();
        });
        
        $this->singleton(RepositoryInterface::class, Repository::class);
    }
}
<?php
require 'vendor/autoload.php';

$providers = [
    AppServiceProvider::class,
];

$app = \P7v\IlluminateContainerSlim\Bridge::usingProviders($providers);