Nuevo en Symfony 5.1: Microkernel mejorado

Symfony se puede usar como microframework desde Symfony 2.8. De hecho, puedes crear aplicaciones Symfony completamente funcionales en un solo archivo gracias al MicroKernelTrait.

En Symfony 5.1 hemos mejorado el MicroKernelTrait para que puedas usar la clase Kernel como un registro de controladores y servicios que usan autowiring o inyección automática de dependencias.

El siguiente ejemplo muestra una aplicación Symfony que define un servicio que es inyectado automáticamente en un controlador, todo ello definido en un solo archivo:

// index.php
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
 
require __DIR__.'/vendor/autoload.php';
 
class MySymfonyApp extends Kernel
{
    use MicroKernelTrait;
 
    protected function configureContainer(ContainerConfigurator $container): void
    {
        $container->services()
            ->load('App\\', '../src')
            ->set(Foo::class)->factory([$this, 'createFoo']);
    }
 
    public function createFoo(Bar $bar)
    {
        return new Foo($bar);
    }
 
    protected function configureRoutes(RoutingConfigurator $routes): void
    {
        $routes->add('home', '/')->controller([$this, 'helloAction']);
    }
 
    public function helloAction(Foo $foo)
    {
        return new Response('Hello '.get_class($foo));
    }
}
 
$app = new MySymfonyApp('dev', true);
$request = Request::createFromGlobals();
$response = $app->handle($request);
$response->send();
$app->terminate($request, $response);

Esta funcionalidad fue contribuida por Nicolas Grekas en el pull request #34881.


Fuente: New in Symfony 5.1: Improved Microkernel

Comentarios

Publicada el

24 de abril de 2020

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.