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
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.