Обновить
2.9

Symfony *

Свободный фреймворк, написанный на PHP5

Сначала показывать
Порог рейтинга
Уровень сложности

Взгляд на JWT как на инструмент построения стройной архитектуры приложения

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели5.7K

Три года назад мне поручили задачу по распилу сразу двух монолитов с вынесением в общий микросервис данных пользователей и созданием единого механизма аутентификации и авторизации. Конечной целью этого действа было создание надежной базы для перехода всей разработки в команде на микросервисную архитектуру.

Тогда-то я впервые и применил на практике JWT, результатами чего остался очень доволен. В этой статье я хочу поделиться своим опытом работы с этим стандартом на конкретных примерах и рассказать, почему он удовлетворяет все мои потребности как разработчика в самых разных проектах: новых и долгоживущих, микросервисных и монолитных, в ситуациях, когда нужно быстро накидать MVP, и когда требуется не спеша и вдумчиво заложить основу на долгие годы качественной разработки.

Читать далее

YAML парсер на Symfony framework

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели563

Привет, Хабр! Сегодня я расскажу вам о том, как использовать YAML-парсер в Symfony.

YAML — это человекочитаемый формат сериализации данных, который используется для конфигурационных файлов. И в Symfony для этого есть компонент Yaml, который позволяет парсить YAML-строки и файлы в PHP-значения и обратно.

Читать далее

Ежегодный опрос PHP-сообщества: итоги 2024 года

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели4.8K

2024 стал насыщенным годом для русскоязычного сообщества PHP-разработки. PHP Russia 2024, релизы PHP 8.4, Symfony 7.2 и Laravel 11.

Как и в последние 4 года, мы провели масштабный опрос, чтобы узнать, чем живут разработчики, какие инструменты используют и куда движется индустрия. На этот раз своим мнением делились 1207 респондентов.

Читать далее

Переход на Symfony в заскорузлом Yii2 монолите: подробный разбор

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели2.3K

Полгода назад мне посчастливилось решать интересную и нетипичную задачу по затаскиванию Symfony в Yii2 монолит. В данном материале я подробно и пошагово распишу весь процесс решения этой задачи с пояснениями, почему были выбраны именно такие решения и как это работает.

Читать далее

Создаем мультитенантные Symfony-приложения с помощью Ecotone

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели975

Способ реализации мультитенантности (multitenancy, мультиарендности) зависит от сферы деятельности, в которой мы работаем. В некоторых случаях нам может хватать одной общей базы данных, а в некоторых нам могут потребоваться отдельные базы данных для полной изоляции. У нас может быть всего пара арендаторов (tenants, тенантов) или же наоборот сотни, нам может потребоваться замедлить или ускорить производительность для конкретного арендатора. Все это создает уникальную среду, в которой мультитенантность является не только техническим вопросом, но и вопросом бизнес‑логики.

Данная статья представляет из себя практическое руководство, после изучения которого вы узнаете, как и зачем следует применять мультитенантность для различных сценариев в вашем проекте.

Читать далее

Дайджест новостей по PHP, Laravel и Symfony за декабрь'2024

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели3K

Привет, Хабр!

Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за декабрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀

Читать далее

[Записки разработчика] airflow->symfony-console->bitrix agents

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели958

Всем привет, случалось такое, что вам надо поставить кучу агентов битрикса на крон, а потом сидеть и разбираться - сколько они отрабатывают, отрабатывают ли вообще, когда падают или зависают?

Ну конечно случалось. Так вот, чтобы получить визуальное представление о том, что там происходит, было принято решение, вынести агенты даже не на крон, а на apache airflow. Поведаю вам, как это было реализовано.

Агенты

По факту, агенты - это выполнение php команд по-расписанию. Но мы пойдем дальше и выделим их в отдельную сущность, в классы с расширением Agents.php

Создадим интерфейс для агентов

Читать далее

Убийца Wordpress уже рядом

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели10K

Через несколько месяцев общественности будет представлен гибрид PHP-фреймворка и CMS. По заявлениям разработчиков, фреймворк возьмёт лучшее из философии Symfony и часть её открытых компонентов, при этом устранит недостатки и сложности, с которыми новички сталкиваются при использовании данного фреймворка. Также система позволит создавать простые блоги и магазины в технике zero code, то есть не открывая исходный код и не нанимая разработчиков.

Здесь нужно сделать небольшую паузу, и отметить, что пока единственный разработчик данного проекта - это я. И совсем не факт, что на выходе получится что-то удобное или даже просто вменяемое. Тем не менее, данный челлендж показался мне интересным, и поэтому - почему нет :)

Читать далее

ResultTransformer в Symfony проектах

Время на прочтение7 мин
Охват и читатели2.1K

Symfony со стандартным набором «батареек» представляет из себя монструозное решение, способное реализовать если и не любые, то очень многие задачи бизнеса. Поделюсь подходом, о котором не каждый symfony‑разработчик слышал, а если и слышал, то разве что вскользь и навряд ли использовал этот метод в разработке. Думаю, пришла пора пролить свет на эту темную сторону.

Всем привет, меня зовут Горелов Кирилл, я бэкенд‑разработчик и я обожаю symfony‑фреймворк. Поговорим про возможность doctrine, которая позволяет возвращать нам готовую DTO, избавляя программиста от ручного труда и делая всю работу за него. Описанный подход под названием ResultTransformer — это термин, который описывает процесс преобразования данных в DTO.

Конечно же, вам не стоит бежать переписывать свой код, у этого подхода есть ряд ограничений, а местами он слишком избыточный и использовать его стоит лишь в некоторых кейсах. Итак, приступим.

Читать далее

Дайджест новостей по PHP, Symfony и Laravel за ноябрь'2024

Уровень сложностиСредний
Время на прочтение31 мин
Охват и читатели3.3K

Привет Хабр!

Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за ноябрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀

Читать далее

250 000 товаров и миллионы характеристик: как мы скрестили Битрикс с Symfony и MongoDB

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели1.5K

10 лет назад мы начинали бизнес студии с разработки сайтов на CMS 1С-Битрикс. Сегодня наш основной стек связан с подходом Single Page Application на Symfony и Nuxt, но клиенты по-прежнему просят сайты на Битриксе.

Отказываться от работы не хочется, однако приходится обходить ограничения Битрикса, чтобы делать быстрые и качественные продукты. В этой статье о том, как мы написали сервис для обработки больших объемов данных на Symfony и MongoDB и интегрировали его с 1С-Битрикс.

Читать далее

Дайджест новостей по Symfony за октябрь'2024 с Кириллом Несмеяновым

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели1.8K

Обзор новостей по Symfony за октябрь. В этом обзоре Кирилл Несмеянов разберет нововведения: от полезных правил валидации Week и WordCount до именованных сериализаторов и улучшений в компоненте Messenger. Узнаете про обновления в системе переводов, работе с контейнером и Expression Language. А еще - про возможность отправлять уведомления прямо на рабочий стол. Самое время узнать, какие инструменты добавились в арсенал Symfony-разработчика!

Читать далее

Отправка и получение сообщений через RabbitMQ в Symfony

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели1.9K

Привет, Хабр!

Итак, решили внедрить асинхронные процессы в своё Symfony-приложение? Отличный выбор! А выбор RabbitMQ для этой задачи — вообще идеален: надёжный, быстрый и отлично работающий в связке с Symfony. Наша цель — научиться отправлять сообщения (скажем, сообщения о новых котиках) в очередь и плавно обрабатывать их.

Читать далее

Ближайшие события

Применение статических анализаторов архитектуры на примере гексагональной архитектуры

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели3.1K

Отсутствие четкой структурированной архитектуры проектов — не редкость в ИТ. Одни этим пренебрегают из-за маленького масштаба проекта, другие — из-за сжатых сроков разработки, третьи — из-за отсутствия экспертизы в этом вопросе. Вместе с тем, движение по этому пути — практически всегда история с «отложенными последствиями»: со временем такие проекты становится сложно поддерживать, масштабировать, администрировать и фиксить. 

Меня зовут Никита Дергачев. Я Teamlead COOL TEAM в MedTech компании СберЗдоровье. В этой статье я расскажу, почему важно структурировано выстраивать архитектуру проектов, а также покажу на примере, с помощью каких инструментов можно отслеживать соответствие архитектуры изначальным требованиям.

Читать далее

Laravel в 2024: статистика и тренды

Время на прочтение2 мин
Охват и читатели2.7K

Нашел интересную статью со статистикой по Laravel за 2024 год и решил поделиться ей с вами. Признаюсь честно, когда я начинал работать с Laravel (лет 5 назад), я и представить не мог, насколько этот фреймворк станет популярным. Давайте посмотрим, что говорят цифры!

Читать далее

Повышаем читаемость Symfony DI

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели2.6K

Привет! Я разрабатываю приложения на Symfony и хочу поделиться проблемами, с которыми сталкивался при использовании Symfony DI, а также дать несколько советов которые, как мне кажется, будут полезны при разработки больших приложений. Кратко я упоминал о них в этой статье, и здесь хочу развернуть мысль и поговорить подробнее.

Читать далее

Пример своего транспорта для Symfony Messenger

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели1.5K

В процессе изучения Symfony Messenger мной было создано два самодостаточных примера, демонстрирующих его работу (описаны в отдельных статьях).

В каждом из этих учебных примеров в качестве транспорта сообщений для простоты была выбрана БД SQLite.
Готовой реализации транспорта именно для SQLite я не нашёл и пришлось её использовать через DBAL Doctrine.

И всё бы ничего, но внутренний перфекционист :-) нашёптывал, что использование целой Доктрины лишь для того, чтобы работать с одной-единственной таблицей с очередями сообщений — это явный перебор…

Бороться с затерроризировавшим меня внутренним перфекционистом ;-) я не стал и, решив поглубже разобраться с устройством транспорта сообщений в Symfony Messenger, создал такой транспорт для SQLite сам, с использованием PDO.
А заодно потестировал производительность самопального решения и решения на Doctrine (на HDD и на RAM drive).

Читать про SQLite транспорт для Messenger

Пример использования Workerman и Symfony Messenger

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели1.6K

Недавно мной был создан самодостаточный пример совместной работы компонентов Symfony Messenger и Symfony Console, подробно описанный в статье https://habr.com/ru/articles/817425/.

Для демонстрации работы этого примера нужно вручную запустить несколько консолей (терминалов), а потом в каждой вручную запустить Worker.

Мой внутренний перфекционист :-) сильно против этого возражал и говорил «а вот бы все эти консоли-терминалы запускались одной командой, в нужном количестве, сразу с Worker’ами, а если какой Worker упадёт, то заново запускались в нужном количестве».

Возражать своему внутреннему перфекционисту я не стал и создал ещё один пример работы Symfony Messenger, который запускается Worker’ами из PHP фреймворка Workerman. При этом Symfony Console вообще не используется.

Пример: Workerman и Symfony Messenger

Простой пример использования Symfony Messenger

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели4K

Пришёл и мой черёд асинхронно и многопоточно средствами PHP кое-что пообрабатывать… И я, естественно, вспомнил про компонент Messenger фреймворка Symfony.

Ранее я никогда Symfony Messenger не использовал.
Чтобы понять, как с ним работать, я пытался найти какой-то простой, законченный и самодостаточный пример, понятный даже чайнику, но мне это не удалось...

Всё, что находилось, было либо слишком сложным, либо это были какие-то отдельные куски кода, понятные только тем, кто уже работал с Symfony Messenger. К тому же всё, что находилось, в основном было "заточено" либо под Redis, либо под RabbitMQ. установка которых как-то немного перебор для учебного примера…

В-общем, я создал и выложил на GitHub такой простой, законченный и самодостаточный пример работы Symfony Messenger совместно с Symfony Console.

Посмотреть пример работы Symfony Messenger

Полезные практики написания поддерживаемого кода на PHP

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

Привет, меня зовут Алексей и я должен признаться, я PHP разработчик. Последние несколько лет плотно занимаюсь проектамиь на symfony и решил поделиться с сообществом практиками, которые стараюсь соблюдать при работе.

Многие из них довольно спорные, для дискуссии добро пожаловать в комментарии.

Читать далее