PHP и Laravel дайджест новостей за сентябрь 2023 года
Краткий обзор новостей из мира PHP и Laravel за сентябрь 2023 г.
Краткий обзор новостей из мира PHP и Laravel за сентябрь 2023 г.
Хабр
PHP и Laravel дайджест новостей за сентябрь 2023 года
Всем привет! Краткий обзор новостей из мира PHP и Laravel за сентябрь 2023 г. PHP Дайджест Вышли PHP 8.1.24 и PHP 8.2.11 Выпуски с исправлениями ошибок вышли по расписанию. Вышел третий релиз кандидат...
🥱4👍3
Stat cache - это механизм кэширования результатов низкоуровневых операций чтения информации о файлах (например, права доступа, размер, время последнего изменения) в PHP. Когда вы вызываете несколько операций работы с файловой системой на одном и том же файле быстро подряд, PHP использует stat cache для оптимизации производительности.
❗Основной момент, который стоит отметить, заключается в том, что stat cache кэширует информацию только для одного файла. Если PHP выполняет низкоуровневую операцию на файле и он не был в кэше ранее, он перезапишет предыдущие данные, связанные с предыдущим файлом.
Статья также предоставляет пример того, как могла бы быть реализована stat cache на уровне PHP, и указывает на важность знания о том, как она работает. Она также подчеркивает, что для избежания ошибок в PHP коде, связанных с этим механизмом, иногда приходится использовать функцию clearstatcache(), чтобы очистить кэш.
❗Основной момент, который стоит отметить, заключается в том, что stat cache кэширует информацию только для одного файла. Если PHP выполняет низкоуровневую операцию на файле и он не был в кэше ранее, он перезапишет предыдущие данные, связанные с предыдущим файлом.
Статья также предоставляет пример того, как могла бы быть реализована stat cache на уровне PHP, и указывает на важность знания о том, как она работает. Она также подчеркивает, что для избежания ошибок в PHP коде, связанных с этим механизмом, иногда приходится использовать функцию clearstatcache(), чтобы очистить кэш.
Tideways
The PHP stat cache explained
90% of the time when I explain how the stat cache works in PHP, people are surprised because they expected it to work differently. It was invented to solve a very limited problem when you call several file system related operations on the same file in quick…
👍9❤1
Persistent-request библиотека для надежных запросов
В этой статье рассказывается о создании библиотеки PersistentRequest для гарантированного выполнения запросов и их обработки в среде Laravel.
🎯 Цели создания библиотеки:
Работа с Laravel
Легкость и гибкость использования
Минимум зависимостей
🔍 Что вы узнаете:
Как установить библиотеку через Composer
Инициализация сервиса и создание объектов запросов
Гарантированное выполнение запросов с возможностью повтора
Гибкая настройка логики обработки ответов
🌟 Преимущества использования:
Гарантированное выполнение запросов в асинхронной среде
Легкость настройки и минимум зависимостей
Пользовательская обработка ответов и возможность повторных попыток
В этой статье рассказывается о создании библиотеки PersistentRequest для гарантированного выполнения запросов и их обработки в среде Laravel.
🎯 Цели создания библиотеки:
Работа с Laravel
Легкость и гибкость использования
Минимум зависимостей
🔍 Что вы узнаете:
Как установить библиотеку через Composer
Инициализация сервиса и создание объектов запросов
Гарантированное выполнение запросов с возможностью повтора
Гибкая настройка логики обработки ответов
🌟 Преимущества использования:
Гарантированное выполнение запросов в асинхронной среде
Легкость настройки и минимум зависимостей
Пользовательская обработка ответов и возможность повторных попыток
Хабр
Persistent-request библиотека для надежных запросов
Всем привет! В этой статье расскажу, как решил написать библиотеку https://packagist.org/packages/xman12/persistent-request и что там внутри. Как и любая библиотека, эта решает свои задачи, а именно...
❤5👍1
Объявления типов в Symfony 7.0
Статья рассказывает о длительной инициативе Symfony по добавлению всех возможных объявлений типов в PHP в свой код. Этот процесс начался в Symfony 5, продолжился в Symfony 6 и приближается к завершению в Symfony 7.0.
Добавление объявлений типов требует осторожности, так как это нарушает обратную совместимость в большинстве случаев. В соответствии с процессом выпуска Symfony, такие изменения разрешены только в мажорных версиях (например, 6.0 и 7.0).
Этот процесс был разделен на три мажорных версии, чтобы уменьшить влияние на библиотеки, использующие компоненты Symfony. Это также дает команде кора достаточно времени для создания необходимых инструментов и внимательного рассмотрения каждого изменения.
Цель Symfony 7.0 - добавить каждое возможное объявление типа в PHP. Она включает в себя:
🟠Добавление типов возвращаемых значений для всех методов, которые были пропущены или упущены в Symfony 6.0;
🟠Добавление типа 'void' там, где это применимо;
🟠Добавление типов для всех свойств класса, включая публичные и защищенные свойства.
Статья рассказывает о длительной инициативе Symfony по добавлению всех возможных объявлений типов в PHP в свой код. Этот процесс начался в Symfony 5, продолжился в Symfony 6 и приближается к завершению в Symfony 7.0.
Добавление объявлений типов требует осторожности, так как это нарушает обратную совместимость в большинстве случаев. В соответствии с процессом выпуска Symfony, такие изменения разрешены только в мажорных версиях (например, 6.0 и 7.0).
Этот процесс был разделен на три мажорных версии, чтобы уменьшить влияние на библиотеки, использующие компоненты Symfony. Это также дает команде кора достаточно времени для создания необходимых инструментов и внимательного рассмотрения каждого изменения.
Цель Symfony 7.0 - добавить каждое возможное объявление типа в PHP. Она включает в себя:
🟠Добавление типов возвращаемых значений для всех методов, которые были пропущены или упущены в Symfony 6.0;
🟠Добавление типа 'void' там, где это применимо;
🟠Добавление типов для всех свойств класса, включая публичные и защищенные свойства.
Symfony
Symfony 7.0 Type Declarations (Symfony Blog)
Symfony 7.0 will come with as much PHP type declarations as possible. Open source maintainers are requested to test their libraries and give feedback. You can also start preparing your applications fo...
❤18👍3
Что такое stateless?
В контексте PHP, термин "stateless" относится к тому, что каждый запрос к серверу обрабатывается независимо от предыдущих запросов. Другими словами, сервер не сохраняет состояния между запросами от клиента, что означает, что он не будет запоминать информацию о клиенте после обработки запроса и не будет использовать ее для последующих запросов.
Такой подход к работе полезен в разработке веб-приложений, так как он упрощает работу с обработкой запросов и повышает масштабируемость веб-сервера, поскольку каждый запрос обрабатывается независимо от других запросов.
Большинство веб-приложений на PHP по умолчанию являются stateless, как и множество других веб-технологий. Однако, в PHP есть способы сохранения состояния, если это нужно для приложения. Например, использование куки (cookies) или сессий (sessions), что позволяет сохранять информацию между запросами от клиента.
#вопросы_с_собеседований
В контексте PHP, термин "stateless" относится к тому, что каждый запрос к серверу обрабатывается независимо от предыдущих запросов. Другими словами, сервер не сохраняет состояния между запросами от клиента, что означает, что он не будет запоминать информацию о клиенте после обработки запроса и не будет использовать ее для последующих запросов.
Такой подход к работе полезен в разработке веб-приложений, так как он упрощает работу с обработкой запросов и повышает масштабируемость веб-сервера, поскольку каждый запрос обрабатывается независимо от других запросов.
Большинство веб-приложений на PHP по умолчанию являются stateless, как и множество других веб-технологий. Однако, в PHP есть способы сохранения состояния, если это нужно для приложения. Например, использование куки (cookies) или сессий (sessions), что позволяет сохранять информацию между запросами от клиента.
#вопросы_с_собеседований
❤11👍3🌚3
Введение в CodefyPHP
Эта статья представляет новый PHP-фреймворк под названием CodefyPHP, который был выпущен недавно. Фреймворк предназначен для разработки сложных приложений с использованием Domain-Driven Design (DDD), CQRS (Command Query Responsibility Segregation) и Event Sourcing.
CodefyPHP не является полноценным фреймворком, как Symfony, Codeigniter, Yii2, FuelPHP или Laravel, но он содержит компоненты, такие как маршрутизация, миграции базы данных, реализации множественных стандартов PSR и шаблонизация. Фреймворк обладает рядом функциональностей, включая инструменты командной строки (CLI) для генерации миграций, контроллеров, промежуточного ПО, поставщиков услуг и других элементов. Он также включает поддержку тестирования (Test-Driven Development) и два движка шаблонов.
🌟 CodefyPHP предоставляет несколько выдающихся функций:
✔️Codex CLI: Интерфейс командной строки для генерации миграций, контроллеров, сервис-провайдеров и даже запуска сервера разработки! 💻
Примеры команд:
php codex serve - Запустить сервер разработки
php codex stub:make Users_controller - Создать UsersController
php codex migrate:generate CreateUsersTable - Генерировать миграцию для создания таблицы пользователей
✔️Движок миграций базы данных: Простой способ контролировать версии базы данных с миграциями! 🗃️
✔️Двойные шаблонизаторы: CodefyPHP включает движок шаблонов Scaffold с нативной и компилируемой реализацией! 🎨
✔️TDD встроен в проект: При создании нового проекта с помощью стартера приложений, он включает PestPHP для тестирования с учетом разработки (TDD)! 🧪
✔️Другие функции: Двойные строители запросов, инжектор для инициализации, маршрутизатор и адаптеры для куков, сессий и кэш-хранилища.
Эта статья представляет новый PHP-фреймворк под названием CodefyPHP, который был выпущен недавно. Фреймворк предназначен для разработки сложных приложений с использованием Domain-Driven Design (DDD), CQRS (Command Query Responsibility Segregation) и Event Sourcing.
CodefyPHP не является полноценным фреймворком, как Symfony, Codeigniter, Yii2, FuelPHP или Laravel, но он содержит компоненты, такие как маршрутизация, миграции базы данных, реализации множественных стандартов PSR и шаблонизация. Фреймворк обладает рядом функциональностей, включая инструменты командной строки (CLI) для генерации миграций, контроллеров, промежуточного ПО, поставщиков услуг и других элементов. Он также включает поддержку тестирования (Test-Driven Development) и два движка шаблонов.
🌟 CodefyPHP предоставляет несколько выдающихся функций:
✔️Codex CLI: Интерфейс командной строки для генерации миграций, контроллеров, сервис-провайдеров и даже запуска сервера разработки! 💻
Примеры команд:
php codex serve - Запустить сервер разработки
php codex stub:make Users_controller - Создать UsersController
php codex migrate:generate CreateUsersTable - Генерировать миграцию для создания таблицы пользователей
✔️Движок миграций базы данных: Простой способ контролировать версии базы данных с миграциями! 🗃️
✔️Двойные шаблонизаторы: CodefyPHP включает движок шаблонов Scaffold с нативной и компилируемой реализацией! 🎨
✔️TDD встроен в проект: При создании нового проекта с помощью стартера приложений, он включает PestPHP для тестирования с учетом разработки (TDD)! 🧪
✔️Другие функции: Двойные строители запросов, инжектор для инициализации, маршрутизатор и адаптеры для куков, сессий и кэш-хранилища.
DEV Community
An Introduction to CodefyPHP: A Domain-Driven Framework
A PHP Domain-Driven Framework for building complex applications with CQRS and Event Sourcing ...
🥱15👍4❤2
Как написанный на Symfony Kbin покоряет Threadiverse
Здесь рассказывается о платформе, являющейся аналогом Reddit, написанной на Symfony - Kbin.
Помимо рассказа о преимуществах платформы автор поведал еще и о том что у неё под капотом, а именно:
✔️Symfony 6.1
✔️API Platform
✔️Schema Generator 3
и многое другое
Здесь рассказывается о платформе, являющейся аналогом Reddit, написанной на Symfony - Kbin.
Помимо рассказа о преимуществах платформы автор поведал еще и о том что у неё под капотом, а именно:
✔️Symfony 6.1
✔️API Platform
✔️Schema Generator 3
и многое другое
Хабр
Как написанный на Symfony Kbin покоряет Threadiverse
Изначально эта статья была опубликована на Symfony Station . Из-за недавнего скандала с Reddit и его недальновидным CEO опенсорсные альтернативы сейчас переживают настоящий бум. И kbin — это как раз...
❤3👍3
Это подробное сравнение трех различных технологических стеков, используемых для создания расширенных поисковых систем на основе движка Elasticsearch. Автор оценивает Symfony (PHP), Flask (Python) и Spring Boot (Java) по различным критериям, таким как удобство использования, настройка локальной среды, создание каркаса проекта, документация по API, интеграция с Elasticsearch, создание поискового сервиса и построителей запросов, ошибки отладки и скорость кодирования.
Результаты сравнения кратко представлены в таблице конце статьи
Статья намекает на продолжение, в котором, вероятно, будут рассмотрены аспекты производительности этих фреймворков.
Результаты сравнения кратко представлены в таблице конце статьи
Статья намекает на продолжение, в котором, вероятно, будут рассмотрены аспекты производительности этих фреймворков.
👍4😁3❤2
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для Москвы 👨🏻🏫
PHP программист в iStudio
Москва. Сеть магазинов.
Подробнее
PHP-разработчик в Сервер в Аренду
Москва. Хостинг.
Подробнее
PHP-разработчик в Автомакон
Москва. Системный интегратор.
Подробнее
PHP-программист в Разумные решения
Москва. Разработка мобильных приложений.
Подробнее
PHP-программист в Флюид-Лайн
Москва. Импорт и продажа арматуры для нефтегазовой, химической и других отраслей.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для Москвы 👨🏻🏫
PHP программист в iStudio
Москва. Сеть магазинов.
Подробнее
PHP-разработчик в Сервер в Аренду
Москва. Хостинг.
Подробнее
PHP-разработчик в Автомакон
Москва. Системный интегратор.
Подробнее
PHP-программист в Разумные решения
Москва. Разработка мобильных приложений.
Подробнее
PHP-программист в Флюид-Лайн
Москва. Импорт и продажа арматуры для нефтегазовой, химической и других отраслей.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
hh.ru
Вакансия PHP программист в Москве, работа в компании iStudio (ООО Бэстбай) (вакансия в архиве c 18 ноября 2023)
Зарплата: от 150000 ₽ за месяц. Москва. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 15.11.2023.
🥱19⚡1❤1👍1😁1
Как относитесь к vim? Хотели ли изучить когда-то?
⬇️⬇️⬇️
⬇️⬇️⬇️
🥱16🔥8🌚3
Laravel без файлов .env
🔎Автор столкнулся с проблемой определения конфигурации в Laravel при использовании Docker и других окружений.
🔧 Для решения этой проблемы он создал новый подход, основанный на создании базового класса Environment, который содержит все необходимые атрибуты для конфигурации.
🚀 Разработчики расширяют этот класс, заполняя информацию для своих конкретных окружений. Для локальной разработки и тестирования PHPUnit автор использует файл .env.php, который не требует специальных настроек и коммитится в систему контроля версий.
⚙️ Он также отключил использование пакета phpdotenv, что улучшило время выполнения автоматизированных тестов.
Новый подход позволил упростить настройку окружения для команды разработчиков и улучшил производительность тестирования.
🔎Автор столкнулся с проблемой определения конфигурации в Laravel при использовании Docker и других окружений.
🔧 Для решения этой проблемы он создал новый подход, основанный на создании базового класса Environment, который содержит все необходимые атрибуты для конфигурации.
🚀 Разработчики расширяют этот класс, заполняя информацию для своих конкретных окружений. Для локальной разработки и тестирования PHPUnit автор использует файл .env.php, который не требует специальных настроек и коммитится в систему контроля версий.
⚙️ Он также отключил использование пакета phpdotenv, что улучшило время выполнения автоматизированных тестов.
Новый подход позволил упростить настройку окружения для команды разработчиков и улучшил производительность тестирования.
blog.deleu.dev
Laravel without .env files
A different approach for dealing with configurations
🥱11❤2🤔2
Что такое CQRS?
CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который предлагает разделить операции записи и чтения данных в приложении на две отдельные ветки. Вместо того, чтобы использовать единый интерфейс для обеих операций, CQRS предлагает использовать различные модели данных для команд и запросов. Это позволяет оптимизировать каждую модель для конкретных задач и улучшить производительность приложения.
Применение CQRS может быть особенно полезным в системах с большим количеством операций записи или при необходимости распределенной обработки запросов. CQRS также может облегчить сопровождение приложения, так как изменения в одной части системы не будут влиять на другие части.
Несмотря на то, что CQRS может быть сложной архитектурой для начала использования, правильное применение может принести множество преимуществ.
Интересная статья на эту тему
#вопросы_с_собеседований
CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который предлагает разделить операции записи и чтения данных в приложении на две отдельные ветки. Вместо того, чтобы использовать единый интерфейс для обеих операций, CQRS предлагает использовать различные модели данных для команд и запросов. Это позволяет оптимизировать каждую модель для конкретных задач и улучшить производительность приложения.
Применение CQRS может быть особенно полезным в системах с большим количеством операций записи или при необходимости распределенной обработки запросов. CQRS также может облегчить сопровождение приложения, так как изменения в одной части системы не будут влиять на другие части.
Несмотря на то, что CQRS может быть сложной архитектурой для начала использования, правильное применение может принести множество преимуществ.
Интересная статья на эту тему
#вопросы_с_собеседований
Хабр
Архитектура CQRS
Идея CQRS возникла в 2010 году, когда Грег Янг (Greg Young) опубликовал статью на эту тему. CQRS быстро стал популярным в разработке приложений, и сегодня является одним из ключевых подходов в работе...
👍14
PDFPintar
PDFPintar — это веб-приложение с применением искусственного интеллекта, предназначенное для взаимодействия с PDF-файлами. Он построен с использованием Laravel и React.
PDFPintar — это веб-приложение с применением искусственного интеллекта, предназначенное для взаимодействия с PDF-файлами. Он построен с использованием Laravel и React.
GitHub
GitHub - ahmadrosid/pdfpintar: Chat with PDF documents.
Chat with PDF documents. Contribute to ahmadrosid/pdfpintar development by creating an account on GitHub.
👍3
Code smells — обзор на примере PHP
🔎В статье рассказывается о понятии "code smells" («кода с душком») — это плохие практики в программировании, которые делают код запутанным и сложным для понимания. Автор делится своим опытом, рассказывая, как столкнулся с проблемами безопасности и масштабирования из-за запутанного кода.
Он описывает основные признаки code smells, такие как:
🟠длинные методы
🟠большие классы
🟠неудачные наименования переменных
и так далее
✔️Для каждого признака он предлагает рекомендации по устранению проблем и подчеркивает важность регулярной проверки кода на наличие этих проблем.
🔎В статье рассказывается о понятии "code smells" («кода с душком») — это плохие практики в программировании, которые делают код запутанным и сложным для понимания. Автор делится своим опытом, рассказывая, как столкнулся с проблемами безопасности и масштабирования из-за запутанного кода.
Он описывает основные признаки code smells, такие как:
🟠длинные методы
🟠большие классы
🟠неудачные наименования переменных
и так далее
✔️Для каждого признака он предлагает рекомендации по устранению проблем и подчеркивает важность регулярной проверки кода на наличие этих проблем.
Хабр
Code smells — обзор на примере PHP
Hola, Amigos! Меня зовут Евгений Шмулевский, я PHP-разработчик в агентстве заказной разработки Amiga. В этой статье хотелось бы рассмотреть вопрос качества кода и что из рекомендаций по нему лично для...
❤9🥱2
🌐 В современной веб-разработке часто возникает сложность в обогащении моделей данных дополнительными атрибутами, которые не хранятся непосредственно в базе данных, но вычисляются на основе существующих полей. Эти метаданные включают в себя бизнес-правила и логику, которые могут быть настроены для отдельных экземпляров модели.
🌟 Статья рассматривает пример веб-приложения электронной коммерции, где каждый продукт имеет цену с дополнительной информацией, такой как валюта, налог и скидки. Вместо изменения схемы базы данных для учета этих атрибутов, они могут быть вычислены на лету на основе бизнес-правил, что обогатит данные приложения, сохраняя при этом простоту базы данных.
🔍 Статья представляет трейт HasMetaAttributes, который обладает такими свойствами как:
✔️Работает в Laravel
✔️Добавляет мета-атрибуты к моделям Eloquent
✔️Включение/выключение глобально или для отдельных экземпляров модели
Этот трейт позволяет добавлять мета-атрибуты к моделям Eloquent, вычисляя их на основе определенных бизнес-правил. С помощью этого трейта можно включать или выключать мета-атрибуты глобально или для отдельных экземпляров модели.
🌟 Статья рассматривает пример веб-приложения электронной коммерции, где каждый продукт имеет цену с дополнительной информацией, такой как валюта, налог и скидки. Вместо изменения схемы базы данных для учета этих атрибутов, они могут быть вычислены на лету на основе бизнес-правил, что обогатит данные приложения, сохраняя при этом простоту базы данных.
🔍 Статья представляет трейт HasMetaAttributes, который обладает такими свойствами как:
✔️Работает в Laravel
✔️Добавляет мета-атрибуты к моделям Eloquent
✔️Включение/выключение глобально или для отдельных экземпляров модели
Этот трейт позволяет добавлять мета-атрибуты к моделям Eloquent, вычисляя их на основе определенных бизнес-правил. С помощью этого трейта можно включать или выключать мета-атрибуты глобально или для отдельных экземпляров модели.
DEV Community
Enhancing Models with Meta Attributes: A Dive into Business Logic Beyond the Database
A perfect example of this complexity is when certain fields in your models require additional...
❤2👍1
Новый #дайджест новостей по PHP за неделю:
🔎 PHP 8.3.0 RC 4 доступен для тестирования. Команда PHP рада объявить о выпуске PHP 8.3.0, RC 4. Это четвертый кандидат на выпуск, продолжающий цикл выпуска PHP 8.3, примерный план которого указан в PHP-вики.
🔎Вышел CakePHP 4.5.0 — В версии 4.5.0 представлено большое количество предупреждений об устаревании, призванных помочь в будущих обновлениях CakePHP 5.0.
🔎Неделя Symfony #876 (9–15 октября 2023 г.) — На этой неделе разработка была очень интенсивной в рамках подготовки к выпуску Symfony 6.4 и 7.0 через 6 недель. Одной из наиболее важных задач было добавление совместимости Doctrine ORM 3 и DBAL 4 в Symfony 5.4 и выше. Также обновили код, чтобы использовать некоторые современные функции PHP 8.
🔎 PHP 8.3.0 RC 4 доступен для тестирования. Команда PHP рада объявить о выпуске PHP 8.3.0, RC 4. Это четвертый кандидат на выпуск, продолжающий цикл выпуска PHP 8.3, примерный план которого указан в PHP-вики.
🔎Вышел CakePHP 4.5.0 — В версии 4.5.0 представлено большое количество предупреждений об устаревании, призванных помочь в будущих обновлениях CakePHP 5.0.
🔎Неделя Symfony #876 (9–15 октября 2023 г.) — На этой неделе разработка была очень интенсивной в рамках подготовки к выпуску Symfony 6.4 и 7.0 через 6 недель. Одной из наиболее важных задач было добавление совместимости Doctrine ORM 3 и DBAL 4 в Symfony 5.4 и выше. Также обновили код, чтобы использовать некоторые современные функции PHP 8.
👍12❤1
Чистые контроллеры в Symfony
Цикл статей состоящий из трех частей
В первой части рассматривается реализация обработки исключений в Symfony-приложении через событийно-ориентированную архитектуру ядра Symfony. В статье представлен подход к делегированию обработки исключений от контроллера к слушателю событий, что упрощает логику контроллера и централизует форматирование тела ответа об ошибке.
Во второй части рассматривается проблема форматирования объектов в контроллерах Symfony-приложения и как ее можно решить. В контексте двух эндпоинтов API, возвращающих информацию о книгах (одна книга и список книг), автор представляет подход к делегированию форматирования ответов от контроллеров к сериализатору Symfony через событие kernel.view.
В третьей части автор рассматривает проблему валидации запросов в контроллерах Symfony-приложения и как ее можно решить. Особенно внимание уделяется контроллерам, которые обрабатывают команды (actions), изменяющие состояние системы.
Автор предлагает использовать Symfony kernel events для централизованной десериализации и валидации запросов, чтобы поддерживать контроллеры в чистом виде, лишенных логики валидации.
Цикл статей состоящий из трех частей
В первой части рассматривается реализация обработки исключений в Symfony-приложении через событийно-ориентированную архитектуру ядра Symfony. В статье представлен подход к делегированию обработки исключений от контроллера к слушателю событий, что упрощает логику контроллера и централизует форматирование тела ответа об ошибке.
Во второй части рассматривается проблема форматирования объектов в контроллерах Symfony-приложения и как ее можно решить. В контексте двух эндпоинтов API, возвращающих информацию о книгах (одна книга и список книг), автор представляет подход к делегированию форматирования ответов от контроллеров к сериализатору Symfony через событие kernel.view.
В третьей части автор рассматривает проблему валидации запросов в контроллерах Symfony-приложения и как ее можно решить. Особенно внимание уделяется контроллерам, которые обрабатывают команды (actions), изменяющие состояние системы.
Автор предлагает использовать Symfony kernel events для централизованной десериализации и валидации запросов, чтобы поддерживать контроллеры в чистом виде, лишенных логики валидации.
👍23❤1