Оглавление
Symfony
Фреймворк для больших проектов: маршруты на атрибутах, шаблоны Twig, Doctrine, формы и безопасность.
1.Начало работы
- Знакомство с SymfonyЧто такое Symfony, как создать проект, как устроены его папки и как написать первую страницу.
- МаршрутыМаршруты в Symfony: атрибут Route, параметры в адресе, ограничения, имена маршрутов и создание ссылок.
- КонтроллерыКонтроллеры Symfony: AbstractController, объект запроса, шаблоны, перенаправления, ответы JSON и ошибка 404.
- Шаблоны TwigШаблонизатор Twig в Symfony: вывод переменных, условия и циклы, фильтры, наследование шаблонов и подключение частей.
- Сессии и cookieСессии и cookie в Symfony: хранение данных между запросами, корзина в сессии, установка и чтение cookie.
- Twig: макросы, свои фильтры, глобальные переменныеПродвинутый Twig в Symfony: переменные и тесты, макросы, собственные фильтры и функции, глобальные значения и встраивание контроллеров.
2.База данных
- Сущности и миграцииDoctrine в Symfony: подключение базы данных, создание сущности, атрибуты столбцов и миграции.
- Создание, чтение, изменение, удалениеРабота с данными в Doctrine: EntityManager, методы persist и flush, поиск записей, автоматическая загрузка сущности по адресу.
- Репозитории и запросыСвои запросы в Doctrine: методы репозитория, QueryBuilder, параметры, сортировка, подсчёт и язык DQL.
- Связи между сущностямиСвязи в Doctrine: ManyToOne и OneToMany, ManyToMany, владеющая сторона, загрузка связанных данных и проблема N+1.
- Тестовые данныеФикстуры в Symfony: DoctrineFixturesBundle, заполнение базы тестовыми записями, библиотека Faker и связи между фикстурами.
- Постраничный выводПагинация в Symfony: Doctrine Paginator, номер страницы из адреса, ссылки в шаблоне и пакет KnpPaginatorBundle.
- Транзакции и скорость DoctrineDoctrine глубже: транзакции и блокировки, обработка больших таблиц, индексы, выборка массивами и прямые запросы SQL.
3.Приложение
- ФормыФормы в Symfony: класс формы, типы полей, обработка отправки в контроллере, вывод в Twig и защита от CSRF.
- Проверка данныхВалидация в Symfony: ограничения Assert в сущности, свои сообщения, уникальность, проверка вручную и собственные правила.
- Вход и права доступаБезопасность в Symfony: сущность пользователя, форма входа, роли, закрытые разделы, атрибут IsGranted и хеширование паролей.
- Сервисы и внедрение зависимостейСервисы в Symfony: автоматическое связывание, свой сервис, параметры и переменные окружения, интерфейсы и настройки.
- Права на конкретную записьИзбиратели (voters) в Symfony: правило «автор может править свою статью», проверка в контроллере, атрибуте и шаблоне.
- СобытияСобытия в Symfony: слушатели и подписчики, события ядра, собственные события и обратные вызовы Doctrine.
- Загрузка файловЗагрузка файлов в Symfony: поле FileType, проверка размера и типа, сохранение с безопасным именем и вывод картинки.
- Запомнить меня, сброс пароля, подтверждение почтыДополнения к входу в Symfony: функция «запомнить меня», ограничение попыток входа, подтверждение почты, сброс пароля и вход от имени пользователя.
- Токены для APIЗащита API в Symfony: отдельный firewall без сессии, проверка токена через access_token, выдача и хранение токенов, атрибут CurrentUser.
4.Развитие проекта
- Консольные командыСвои команды для bin/console в Symfony: атрибут AsCommand, аргументы и опции, оформление вывода и использование сервисов.
- API и JSONAPI на Symfony: ответы JSON, группы сериализации, приём данных через MapRequestPayload, коды состояния и API Platform.
- ТестированиеТесты в Symfony: PHPUnit, модульные тесты сервисов, WebTestCase для страниц, отправка форм и вход пользователя в тесте.
- Размещение на сервереПубликация проекта Symfony: режим prod, установка зависимостей, миграции, очистка кеша, секреты и настройка веб-сервера.
- Окружения, параметры и секретыНастройка Symfony: окружения dev, test и prod, порядок файлов .env, параметры приложения, преобразование переменных и хранилище секретов.
- Панель управления EasyAdminАдминистративная панель на Symfony за час: пакет EasyAdmin, контроллеры CRUD, настройка полей, меню, фильтры и защита доступа.
- API PlatformГотовый API на Symfony: атрибут ApiResource, набор операций, группы сериализации, фильтры, постраничный вывод и права доступа.
5.Компоненты
- Отправка писемSymfony Mailer: настройка MAILER_DSN, простое письмо, письма из шаблонов Twig, вложения и проверка писем при разработке.
- Очереди сообщенийSymfony Messenger: сообщение и обработчик, асинхронный транспорт, запуск обработчика, повторы и неудачные сообщения.
- КешированиеКеш в Symfony: CacheInterface, срок жизни записей, удаление, метки, хранение в Redis и кеширование ответа HTTP.
- Запросы к другим сервисамSymfony HttpClient: запросы GET и POST, разбор JSON, заголовки и авторизация, обработка ошибок и настроенные клиенты.
- Перевод интерфейсаМногоязычный сайт на Symfony: файлы перевода, фильтр trans, подстановка значений, формы множественного числа и язык в адресе.
- Стили и скриптыФронтенд в Symfony: AssetMapper и importmap, подключение CSS и JavaScript, сторонние пакеты, Stimulus и подготовка к размещению.
- Журнал и страницы ошибокЛогирование и ошибки в Symfony: LoggerInterface, уровни и настройка Monolog, свои страницы 404 и 500, ответы об ошибках для API.
- Задачи по расписаниюSymfony Scheduler: задачи с атрибутами AsCronTask и AsPeriodicTask, свой график, запуск обработчика и защита от двойного выполнения.
- Ограничение частоты запросовSymfony RateLimiter: настройка ограничителя, политики fixed_window, sliding_window и token_bucket, ответ 429 и хранение счётчиков.
- Turbo и живые компонентыSymfony UX: Turbo для переходов без перезагрузки, Turbo Frames, компоненты Twig и Live Components с интерактивностью на PHP.