New in Symfony 5.3: Runtime Component

Contributed by Nicolas Grekas in #38465 and #40513.

Symfony 5.3 was released on May 31, 2021. Although we’ve published many articles about new Symfony 5.3 features, there are some interesting new features that we haven’t discussed yet. The first one is the new Runtime Component. The purpose of the Runtime component is to abstract most of the application bootstrapping logic into so-called runtimes, allowing you to write generic front-controllers. This will make Symfony applications easier to maintain, because the front-controller code can be moved to a Symfony Flex recipe managed automatically by Symfony. In addition, this component decouples the bootstrapping from any global state to make sure the application can run with runtimes like PHP-FPM, ReactPHP, Swoole, etc. without any changes. If you open your public/index.php file, you’ll see some code like this: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22// public/index.php <?php

use App\Kernel; use Symfony\Component\Dotenv\Dotenv; use Symfony\Component\ErrorHandler\Debug; use Symfony\Component\HttpFoundation\Request;

require dirname(DIR).'/vendor/autoload.php';

(new Dotenv())->bootEnv(dirname(DIR).'/.env');

if ($_SERVER['APP_DEBUG']) { umask(0000); Debug::enable(); }

$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); $request = Request::createFromGlobals(); $response = $kernel->handle($request); $response->send(); $kernel->terminate($request, $response);

In addition to some autoloading and configuration, this file contains the code needed to process the well-known Symfony Request-Response flow. In a new Symfony 5.3 application, the same front-controller uses Symfony Runtime and its code looks as follows: 1 2 3 4 5 6 7 8 9 10// public/index.php <?php

use App\Kernel;

require_once dirname(DIR).'/vendor/autoload_runtime.php';

return function (array $context) { return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); };

Why is the new front-controller code so concise? Where is the request turned into a response? What’s this autoload_runtime.php file? Read the new Runtime component docs to learn about all this and more. You will also learn how to tweak this runtime and how to create your own runtimes. If you are upgrading an existing application to Symfony 5.3, you can start using this new component as follows:

Install the component by running composer require symfony/runtime Update your front controller using the public/index.php code found in Symfony’s FrameworkBundle recipe Update your console script using the bin/console code found in Symfony’s Console recipe

If you want to learn more about this component, join the SymfonyWorld Online 2021 Summer Edition conference (June 17-18, 2021), where Tobias Nyholm will deliver a talk titled “Runtime component: The game changer”.

                Sponsor the Symfony project.

http://feedproxy.google.com/~r/symfony/blog/~3/rAuSFR_e6s4/new-in-symfony-5-3-runtime-component

Creată 4y | 2 iun. 2021, 08:20:05


Autentifică-te pentru a adăuga comentarii

Alte posturi din acest grup

New in Symfony 7.3: Validator Improvements

Symfony 7.3 introduces several enhancements to the Validator component, focusing on developer experience, better configurability, and more expressive constraint definitions.

Allow to Disable Translat

27 mai 2025, 08:30:20 | Symfony
New in Symfony 7.3: Serializer Improvements

Symfony 7.3 adds a new JsonStreamer component as a high-performance, low-memory JSON encoding and decoding utility. However, the Serializer component still has many valid use cases, even for JSON cont

26 mai 2025, 09:20:09 | Symfony
Symfony 7.3.0-RC1 released

Symfony 7.3.0-RC1 has just been released. This is a pre-release version of Symfony 7.3. If you want to test it in your own applications before its final release, run the following commands:

26 mai 2025, 00:10:10 | Symfony
A Week of Symfony #960 (May 19–25, 2025)

This week, development activity focused on putting the final touches on Symfony 7.3 in preparation for its stable release next week. In addition, we published a security fix for a potential vulnerabil

25 mai 2025, 10:10:12 | Symfony
New in Symfony 7.3: New Bridges and Improved Integrations

Symfony's bridge packages integrate third-party services, such as mailers, notifiers, and translation providers, into Symfony applications. With more than 120 bridges available today, Symfony supports

23 mai 2025, 09:30:04 | Symfony
New in Symfony 7.3: Messenger Improvements

Symfony Messenger component keeps evolving to meet the needs of complex, modern applications. In Symfony 7.3, we're introducing several powerful features to it.

Run Process Using the Shell… https://s

22 mai 2025, 07:50:11 | Symfony
New in Symfony 7.3: Routing Improvements

The Routing component provides an impressive list of features to map incoming URLs to your application code. Symfony 7.3 pushes it even further with a set of new features that improve developer experi

21 mai 2025, 11:10:07 | Symfony