Перейти к основному содержимому

Symfony

Разработчику Архитектору

Symfony

Symfony — зрелый PHP-фреймворк и набор переиспользуемых компонентов (HTTP, Console, Messenger, Validator и др.). Laravel и API Platform опираются на части Symfony; многие enterprise-проекты выбирают Symfony напрямую за предсказуемость, долгую поддержку LTS и строгую архитектуру.

Пошаговый старт: Первая программа на Symfony. Шпаргалка: Справочник по Symfony. Сравнение с Laravel: Laravel, Экосистема PHP-приложений.


Философия: компоненты и полный фреймворк

ПодходОписание
Только компонентыПодключить symfony/http-foundation + routing в свой проект
Symfony FrameworkСоглашения, бандлы, DI, конфигурация YAML/PHP
Symfony FlexРецепты: после composer require автоматически настраиваются файлы

Требования: PHP 8.2+, Composer, расширения ctype, iconv, mbstring (см. официальную документацию для вашей версии).


Жизненный цикл HTTP-запроса

Точка входа — public/index.php. Каталог public/ — единственная директория, доступная извне (аналогично Laravel).


Ключевые понятия

Бандлы (Bundles)

Модуль функциональности: регистрирует маршруты, сервисы, шаблоны. FrameworkBundle, TwigBundle, SecurityBundle — стандартный набор.

DI-контейнер

Зависимости объявляются в config/services.yaml и внедряются через конструктор:

public function __construct(
private readonly EntityManagerInterface $em,
) {}

Автоконфигурация помечает классы в src/ как сервисы.

Маршрутизация

Атрибуты PHP 8 (предпочтительно в новых проектах):

#[Route('/hello', name: 'app_hello')]
public function hello(): Response
{
return new Response('Hello');
}

Doctrine ORM

Стандарт де-факто для работы с БД: сущности, репозитории, миграции (php bin/console make:migration).

Messenger

Асинхронные задачи и очереди — аналог Laravel Queue. Транспорты: AMQP, Redis, Doctrine.

Security

Firewall, аутентификация (form login, JWT через пакеты), роли и voters для авторизации.


Symfony vs Laravel

SymfonyLaravel
СтильЯвная конфигурация, enterpriseВыразительные соглашения, скорость старта
ORMDoctrine (Data Mapper)Eloquent (Active Record)
ШаблоныTwigBlade
CLIbin/consoleartisan
Типичный заказчикБанки, госсектор, крупный B2BСтартапы, агентства, широкий рынок

Оба фреймворка «взрослые»; выбор часто определяется командой и политикой компании, а не «слабостью» технологии.


Инструменты

symfony new myapp --webapp # скелет с Twig, Doctrine, Security
composer require symfony/orm-pack
php bin/console cache:clear
php bin/console debug:router
symfony server:start # локальный сервер (Symfony CLI)

Связанные материалы


См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).