<? phpukraine СПІВБЕСІДИ
⌕Пошук по платформі

Symfony для Junior: питання на співбесіду

5 питань рівня Junior з теми Symfony з розгорнутими відповідями, порадами та перевіркою.

Тема
Рівень
5 питань
SF
Symfony·Junior ·HttpKernel ·EventDispatcher ·lifecycle

HttpKernel перетворює Request на Response, дорогою розсилаючи події: kernel.request (маршрутизація), kernel.controller і kernel.controller_arguments (резолвінг контролера й аргументів), kernel.view (якщо контролер повернув не Response), kernel.response, kernel.terminate після відправлення відповіді.

Завантажую відповідь…
Сторінка питання →
SF
Symfony·Junior ·Doctrine ·Data Mapper ·EntityManager

Doctrine це Data Mapper: сутність - звичайний PHP-клас без save() і find(), а стан у базу переносить EntityManager (persist реєструє новий об'єкт, flush виконує SQL), тоді як репозиторій відповідає лише за запити. В Active Record модель сама знає про з'єднання, тому домен і таблиця злиті в один клас.

Завантажую відповідь…
Сторінка питання →
SF
Symfony·Junior ·Console ·AsCommand ·CommandTester

Команда - це сервіс з атрибутом #[AsCommand]: у Symfony 7.3+ достатньо класу з методом __invoke() і параметрами під #[Argument] та #[Option], вивід іде через SymfonyStyle, тест пишеться на CommandTester, а від паралельних запусків з cron захищає Lock.

Завантажую відповідь…
Сторінка питання →
SF
Symfony·Junior ·autowiring ·autoconfigure ·services.yaml

Autowiring підставляє залежності за типом параметра конструктора, autoconfigure навішує теги за реалізованим інтерфейсом чи атрибутом; обидва мовчать там, де тип нічого не каже: скаляри й env, класи з vendor, дві реалізації одного інтерфейсу та теги з атрибутами вимагають явного запису в services.yaml або атрибута #[Autowire].

Завантажую відповідь…
Сторінка питання →
SF
Symfony·Junior ·Twig ·XSS ·autoescape

Twig за замовчуванням екранує кожен вивід `{{ }}`, але стратегію обирає за розширенням файлу шаблону (`.html.twig` - html, `.js.twig` - js, `.txt.twig` - без екранування), а не за місцем виразу в розмітці; тому в атрибутах, URL-параметрах і в `<script>` потрібні явні `|e('html_attr')`, `|e('url')`, `|e('js')`, а `|raw` лишають тільки для HTML, який згенерував сам застосунок або пропустив через санітайзер.

Завантажую відповідь…
Сторінка питання →
Прогрес карток і тестів зберігається у профілі. Створити профіль·Увійти