
Привет, Хабр!
Сергей Пантелеев и Данил Щуцкий собрали ключевые новости PHP и Laravel за июнь. Будьте в тренде — читайте обзор! 🚀
Свободный фреймворк, написанный на PHP5
Привет, Хабр!
Сергей Пантелеев и Данил Щуцкий собрали ключевые новости PHP и Laravel за июнь. Будьте в тренде — читайте обзор! 🚀
«Будем отправлять события в Rabbit!» Фраза, которая выдает мышление, рождающее код, полный боли. К сожалению, я ее часто слышу. Поэтому, уже много лет размышлял о написании этой статьи и безумно рад, что у меня, наконец, дошли до нее руки.
В статье я расскажу, как смешение понятий события, сообщения и транспорта рождает возгласы типа «Я ненавижу использовать Symfony Messenger, потому что был у меня проект на нем, и он не взлетел!»
Будут косвенно затронуты компоненты Symfony Messenger и Event Dispatcher. Несмотря на это, данный материал может оказаться полезным и для разработчиков, использующих другие фреймворки и даже другие языки.
Привет, Хабр!
Сергей Пантелеев и Данил Щуцкий собрали новости за май в PHP и Laravel. Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀
Недавно состоялся у меня небольшой спор с коллегой, активно защищающим анемичные модели с размещением логики в сервисах. Несколько лет назад я и сам был последовательным фанатом такой разработки, пока не стал спотыкаться об ограничения этого подхода. В этом тексте хочу поделиться с вами плюсами и минусами анемичных моделей, как их вижу я.
Большинство PHP фреймворков имеет свои решения для шаблонов, но существует огромное количество PHP проектов, включая CMS вроде WordPress, где коробочные решения отсутствуют.
Обычные PHP шаблоны довольно многословны и подвержены ошибкам. PHP Views призван сделать работу с шаблонами в чистом PHP более простой, гибкой и надежной.
Modulith — архитектурный стиль, при котором приложение остаётся монолитом, но код внутри разбит на модули (подпапки) по доменам.
Классическая структура проектов выглядит так:
├── src
├── Command
├── Controller
│ ├── Product
│ └── User
├── Doctrine
├── Entity
│ ├── Product.php
│ └── User.php
├── Message
├── MessageHandler
└── Kernel.php
Структура modulith в Symfony выглядела б так:
├── src
├── Product
│ ├── Command
│ ├── Controller
│ ├── Doctrine
│ ├── Entity
│ ├── Message
│ └── MessageHandler
├── User
│ ├── Controller
│ └── Entity
└── Kernel.php
Разница в том, что в modulith каждый модуль (например Product, User) содержит все компоненты в своей папке, а не по всему проекту.
Если нужна доработка условной корзины, вы сразу знаете где находится весь код отвечающий за корзину, меньше конфликтов при слиянии
Вдобавок исчезают портянки файлов, когда открываете Entity, а там 30 файлов в столбик
Часто самая большая сложность возникает у людей при конфигурации модулей. Ничто нам не мешает запихать всю конфигурацию в один общий файл, например config/services.yaml
, но из-за этого файл быстро станет раздуваться, что снизит его поддерживаемость и в нем будет единая точка связности модулей.
Поэтому конфигурацию модулей лучше выносить в сами модули
Привет, Хабр!
Сегодня рассмотрим одну из самых сильных сторон Symfony — компонент EventDispatcher.
Если очень кратко, EventDispatcher позволяет создавать реактивную архитектуру: одни части приложения инициируют события, другие на них реагируют, не зная напрямую друг о друге.
Хотим поделиться опытом разработки эффективного поиска для одного интересного проекта. Мы подробно рассмотрим, как сделали поиск удобным, быстрым и привлекательным для пользователей, увеличив конверсию на 27% всего лишь за счет грамотной настройки Elasticsearch.
Статья нацелена в первую очередь на PHP backend-разработчиков уровня junior/middle, чтобы познакомить с теорией, которую спрашивают на собеседованиях, и с практическими примерами/советами, полезными для разработки.
Здесь хочу рассказать зачем вообще тестировать код, какие инструменты использовать, какие есть паттерны и тп.
Symfony и React – мощная связка для создания современных веб-приложений. Symfony, как PHP-фреймворк, обеспечивает надежный серверный бэкенд: работу с базой данных, бизнес-логику, REST API и безопасность. React же отвечает за динамичный интерфейс на стороне клиента, позволяя создавать богатые Single Page Application (SPA) с мгновенной реакцией на действия пользователя. Используя их вместе, разработчики получают гибкость разделения фронтенда и бэкенда, что упрощает поддержку и масштабирование. Например, бэкенд на Symfony можно переиспользовать для мобильного приложения или другого клиента, пока React обеспечивает отличное UX в браузере.
Однако сочетание двух разных технологий несет и ряд вызовов. Нужно грамотно спроектировать API для связи между фронтом и бэком, обеспечить безопасный обмен данными и учесть особенности работы SPA (например, отсутствие перезагрузки страниц, хранение состояний на клиенте и пр.). Возникают вопросы: как организовать взаимодействие React-приложения с Symfony API? Как защитить API и пользовательские данные от угроз, таких как несанкционированный доступ или атаки? В этой статье мы рассмотрим основные проблемы интеграции Symfony + React, связанные с API и безопасностью, а также предложим практические методы их решения. Статья ориентирована на разработчиков от начинающих до среднего уровня и включает примеры кода и наглядные иллюстрации ключевых моментов.
Три года назад мне поручили задачу по распилу сразу двух монолитов с вынесением в общий микросервис данных пользователей и созданием единого механизма аутентификации и авторизации. Конечной целью этого действа было создание надежной базы для перехода всей разработки в команде на микросервисную архитектуру.
Тогда-то я впервые и применил на практике JWT, результатами чего остался очень доволен. В этой статье я хочу поделиться своим опытом работы с этим стандартом на конкретных примерах и рассказать, почему он удовлетворяет все мои потребности как разработчика в самых разных проектах: новых и долгоживущих, микросервисных и монолитных, в ситуациях, когда нужно быстро накидать MVP, и когда требуется не спеша и вдумчиво заложить основу на долгие годы качественной разработки.
Привет, Хабр! Сегодня я расскажу вам о том, как использовать YAML-парсер в Symfony.
YAML — это человекочитаемый формат сериализации данных, который используется для конфигурационных файлов. И в Symfony для этого есть компонент Yaml
, который позволяет парсить YAML-строки и файлы в PHP-значения и обратно.
2024 стал насыщенным годом для русскоязычного сообщества PHP-разработки. PHP Russia 2024, релизы PHP 8.4, Symfony 7.2 и Laravel 11.
Как и в последние 4 года, мы провели масштабный опрос, чтобы узнать, чем живут разработчики, какие инструменты используют и куда движется индустрия. На этот раз своим мнением делились 1207 респондентов.
Полгода назад мне посчастливилось решать интересную и нетипичную задачу по затаскиванию Symfony в Yii2 монолит. В данном материале я подробно и пошагово распишу весь процесс решения этой задачи с пояснениями, почему были выбраны именно такие решения и как это работает.
Способ реализации мультитенантности (multitenancy, мультиарендности) зависит от сферы деятельности, в которой мы работаем. В некоторых случаях нам может хватать одной общей базы данных, а в некоторых нам могут потребоваться отдельные базы данных для полной изоляции. У нас может быть всего пара арендаторов (tenants, тенантов) или же наоборот сотни, нам может потребоваться замедлить или ускорить производительность для конкретного арендатора. Все это создает уникальную среду, в которой мультитенантность является не только техническим вопросом, но и вопросом бизнес‑логики.
Данная статья представляет из себя практическое руководство, после изучения которого вы узнаете, как и зачем следует применять мультитенантность для различных сценариев в вашем проекте.
Привет, Хабр!
Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за декабрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀
Всем привет, случалось такое, что вам надо поставить кучу агентов битрикса на крон, а потом сидеть и разбираться - сколько они отрабатывают, отрабатывают ли вообще, когда падают или зависают?
Ну конечно случалось. Так вот, чтобы получить визуальное представление о том, что там происходит, было принято решение, вынести агенты даже не на крон, а на apache airflow. Поведаю вам, как это было реализовано.
Агенты
По факту, агенты - это выполнение php команд по-расписанию. Но мы пойдем дальше и выделим их в отдельную сущность, в классы с расширением Agents.php
Создадим интерфейс для агентов
Через несколько месяцев общественности будет представлен гибрид PHP-фреймворка и CMS. По заявлениям разработчиков, фреймворк возьмёт лучшее из философии Symfony и часть её открытых компонентов, при этом устранит недостатки и сложности, с которыми новички сталкиваются при использовании данного фреймворка. Также система позволит создавать простые блоги и магазины в технике zero code, то есть не открывая исходный код и не нанимая разработчиков.
Здесь нужно сделать небольшую паузу, и отметить, что пока единственный разработчик данного проекта - это я. И совсем не факт, что на выходе получится что-то удобное или даже просто вменяемое. Тем не менее, данный челлендж показался мне интересным, и поэтому - почему нет :)
Symfony со стандартным набором «батареек» представляет из себя монструозное решение, способное реализовать если и не любые, то очень многие задачи бизнеса. Поделюсь подходом, о котором не каждый symfony‑разработчик слышал, а если и слышал, то разве что вскользь и навряд ли использовал этот метод в разработке. Думаю, пришла пора пролить свет на эту темную сторону.
Всем привет, меня зовут Горелов Кирилл, я бэкенд‑разработчик и я обожаю symfony‑фреймворк. Поговорим про возможность doctrine, которая позволяет возвращать нам готовую DTO, избавляя программиста от ручного труда и делая всю работу за него. Описанный подход под названием ResultTransformer — это термин, который описывает процесс преобразования данных в DTO.
Конечно же, вам не стоит бежать переписывать свой код, у этого подхода есть ряд ограничений, а местами он слишком избыточный и использовать его стоит лишь в некоторых кейсах. Итак, приступим.
Привет Хабр!
Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за ноябрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀