Symfony 5.3 был выпущен 31 мая 2021 года. Хотя было опубликовано много статей о новых функциях Symfony 5.3, есть некоторые интересные новые функции, которые еще не обсуждали. Первый — это новый компонент среды выполнения.
Назначение компонента Runtime — абстрагировать большую часть логики начальной загрузки приложения в так называемые среды выполнения, что позволяет вам писать общие фронт-контроллеры. Это упростит поддержку приложений Symfony, поскольку код фронт-контроллера может быть перемещен в рецепт Symfony Flex, управляемый Symfony автоматически.
Кроме того, этот компонент отделяет загрузку от любого глобального состояния, чтобы приложение могло работать с такими средами выполнения, как PHP-FPM, ReactPHP, Swoole и т. д., Без каких-либо изменений.
Если вы откроете файл public/index.php
, вы увидите такой код:
// 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);
В дополнение к некоторой автозагрузке и настройке, этот файл содержит код, необходимый для обработки хорошо известного потока запросов-ответов Symfony. В новом приложении Symfony 5.3 тот же фронт-контроллер использует Symfony Runtime, и его код выглядит следующим образом:
// 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']);
};
Почему новый код фронт-контроллера такой лаконичный? Где запрос превратился в ответ? Что это за файл autoload_runtime.php
? Прочтите новую документацию по компонентам среды выполнения, чтобы узнать обо всем этом и многом другом. Вы также узнаете, как настроить эту среду выполнения и как создавать свои собственные среды выполнения.
Если вы обновляете существующее приложение до Symfony 5.3, вы можете начать использовать этот новый компонент следующим образом:
- Установите компонент, запустив
composer require symfony/runtime
- Обновите свой фронт-контроллер, используя код
public/index.php
из рецепта Symfony FrameworkBundle. - Обновите скрипт консоли, используя код
bin/console
из рецепта консоли Symfony.