PHP.today
3.28K subscribers
13 photos
1 video
4 files
244 links
Самые свежие новости из мира PHP. Обновленные стандарты. Лучшие практики с примерами кода. Как писать чистый, читаемый и понятный код.
Чат тут https://xn--r1a.website/all_it_ru
Download Telegram
Написал для вас "Шпаргалку по JavaScript для всех бэкэндеров". Она для тех, кому иногда приходится сталкиваться с JS, но настолько редко, что основные тонкости языка очень быстро выветриваются из головы.

#js #frontend #шпаргалка

https://vc.ru/dev/612832-shpargalka-po-javascript-dlya-vseh-bekenderov
👍77
Вы еще не пользуетесь rector? Тогда мы идем к вам!

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

Подробности тут https://habr.com/ru/companies/oleg-bunin/articles/720216/
👍39🔥10
Я помню, как работал с большим массивом данных, и очень удивился когда обнаружил, насколько отличается потребление памяти ассоциативного и классического массивов. Даже пришлось нагородить свой велосипед, чтоб работать с 10 миллионами строк из базы не втыкая еще пару планок оперативы (разница была в районе - ассоциативный 8 гигов, классический - 300 мегабайт).


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


https://habr.com/ru/articles/746868/
👍42💩31
Залез почитать что новенького на Плюке, и обнаружил отличного автора!

Парень (скорее всего, но может и девушка) ворвался на Хабр в ноябре этого года, и уже настрочил целых две оччень полезных статьи!

То, что точно подойдет для всех - кастомизация шторма (с новым дизайном) для большего удобства - https://habr.com/ru/articles/784256/
👍61👎1
А для тех кто пишет API на Symfony - как можно суперудобно прикрутить сваггер, без добавления дублирующих всё и вся аннотаций к каждому методу (да еще и не сломав старую реализацию, если она у вас уже есть)


https://habr.com/ru/articles/775056/
👍71
Новая статья на хабре о перезапуске устаревшего портала на PHP
Много технических подробностей, схемы архитектуры и общие рассуждения о том, что делать с устаревшими проектами, чтобы они продолжали жить и развиваться.

https://habr.com/ru/articles/787958/
👍10
Привет! На связи Podlodka Crew, организатор IT-мероприятий по разным технологиям и языкам. Уже 22 апреля мы запускаем четвертый сезон конференции по PHP. Тема — практика работы с базами данных. И практики будет реально много. Ведь никакая теория не сравнится с возможностью увидеть применение инструментов и технологий в реальности при решении рабочих задач.

Продолжаем знакомить вас со спикерами! Ребята поделятся кейсами и научат внедрять услышанное в собственные проекты:
Олег Мифле из VK расскажет, какие бывают уровни изоляции транзакций, зачем они нужны и как устроены. Разберёт аномалии, влияющие на консистентность базы, и способы с ними справиться.

Ильяс Салихов из RetailCRM раскроет тонкости работы с PostgreSQL, в том числе поговорим про индексы и типы данных. Объяснит нюансы миграции схемы в масштабе, рассмотрит батчинг-операции.

Дмитрий Вагин из Wildberries тоже затронет тему миграций. Но не остановится на этом: научит строить грамотный flow работы с СУБД на проектах. Опишет, как устроены фикстуры и слепки в тестировании и разработке. Покажет проблемы изолированных сред, научит строить prod-like окружение. Отдельно остановиться на работе с чувствительными данными.

Николай Губин из Авито раскроет преимущества Redis перед Memcached. Примеры из опыта проиллюстрируют, как применять богатство структур данных в Redis. Попробуем организовать конвейер по обработке и кэшированию. По-новому взглянем на возможности транзакций. Прокачаемся в оптимизации сетевых подходов с помощью пайплайнов.

Ознакомиться с полным списком спикеров и докладов можно на сайте. Билеты уже в продаже, поспеши забрать свой💥
👍4
Получи оффер в Lamoda Tech за два дня

Приходи на Weekend Offer 22-23 июня для PHP/Go-разработчиков! Открыли регистрацию и уже ждем ваши отклики 😎 Ищем тех, у кого есть опыт разработки на PHP и желание писать на Go.

Эти два языка идут в компании рука об руку: мы поддерживаем часть сервисов на PHP, а новые пишем на Go. 

Нет знания Golang? Научим! Для этого проводим двухнедельный онбординг, который позволяет написать собственный сервис с нуля. Для поддержания профессиональной экспертизы есть отдельные PHP- и Go-сообщества, которые активно друг с другом взаимодействуют. 

Стало интересно? Тогда подавай заявку до 20 июня и узнай больше подробностей по ссылке.
💩2🔥1🌚1
Podlodka PHP Crew — это серия онлайн-конференций для php-разработчиков с упором на практическую пользу.

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

Уже 30 сентября стартовал новый сезон, где обсуждают архитектуру:

- Как документировать сложные системы по модели C4, разберемся с Кириллом Сурогатовым (Oxagile);

- Как выбрать между RabbitMQ и Kafka для обработки большого количества сообщений, обсудим на конкретных кейсах с Михаилом Камориным (Skyeng);

- Лайвкодинг по Temporal — Алексей Гагарин, Павел Бучнев (Spiral Scout) наглядно покажут, как этот инструмент упрощает жизнь разработчикам;

- Как ускорить работу PHP-монолита с RoadRunner, поделится Владимир Плахотников (Yclients).

Каждый доклад — это готовое решение, которое можно внедрить в свой проект. Билеты и подробности на сайте: https://podlodka.io/phpcrew
🔥1
А также у меня есть одна бесплатная проходка на конференцию.

Так как конфа уже идет - мы разыграем ее в самое ближайшее время.

Условия
1. Быть подписанным на @phptoday
2. Заполнить свой телеграм ник тут в гугл-форме: https://tinyurl.com/phptoday-podlodka-2024

Через несколько часов мы разыграем бесплатную проходку между всеми кто успел.
🔥3
Когда проекты растут, а требований становится больше, скорость разработки начинает упираться не в язык или фреймворки, а в процессы, инструменты и организацию работы.

С 1 по 5 декабря конференция Podlodka PHP Crew собирает сезон о том, как разгонять PHP-разработку без стресса и перегрузов.

📌 В программу вошли новые доклады:

🧩 Тесты для ускорения — Александр Макаров (Twindo): о роли тестирования в скорости разработки, какие виды тестов действительно дают ускорение, и как распределить ответственность между разработчиками, QA и LLM.

📄 Контракты пишем — код генерим — Александр Забанов (Вебпрактик): contract-first подход, который снижает количество ошибок и делает интеграции предсказуемыми.

🧱 Платформа как LEGO — Антон Комарев (BelkaCar): как собрать внутреннюю платформу для разработчиков из готовых «кубиков» и убрать хаос внутренних тулов.

🎛 Фича-флаги — Сергей Волошин (Вебпрактик): как перейти от «деплой = релиз» к гибкому управлению функциональностью и выпускать код хоть каждый час.

💡Все темы прикладные, с упором на ускорение команд и уменьшение рутины.

🔗 Программа и билеты: https://podlodka.io/phpcrew

А по по промокоду php_crew_7_NkmzHq получите скидку 🎁
Как и в прошлый раз, развгрываем проходку на конфу.

Нужно:
1. Быть подписанным на @phptoday
2. Заполнить свой тг ник в форму

https://docs.google.com/forms/d/e/1FAIpQLSc69NJHYU0IMflQWeN5d_Q_vpV6ORbFyZoSIuCfj6oXCjo1GA/viewform?usp=publish-editor

Розыгрыш через 24 часа.
1👍1👎1🔥1
Yii3 наконец-то официально зарелизили — после долгой разработки это прям событие для всего PHP-мира. Я бы хотя бы пробежался по ключевым изменениям и архитектурным решениям, чтобы понимать, куда движется экосистема и что можно будет брать в новые проекты: Yii3. Официальный релиз

В PHP 8.4 подъехали property hooks — и это тот редкий случай, когда «синтаксический сахар» реально убирает мусор из кода. По сути, встроенные get/set на уровне свойства: меньше бойлерплейта, меньше шансов на рассинхрон логики, и читать классы становится приятнее: Хуки свойств в PHP: геттеры и сеттеры не нужны

Меня зацепила идея «ускорить Composer в разы» — автор рассказывает, как подошёл к установке зависимостей с другой стороны и попробовал вынести узкое место из PHP-рантайма. Даже если не ставить это в прод, полезно понять, где реально тратится время в dependency management и какие оптимизации дают самый жирный эффект: Как я ускорил установку PHP-зависимостей в 5 раз с помощью Go

И отдельно понравился практичный кейс: сделали небольшой Composer‑пакет, который чистит HTML (а это вечная боль, когда «прилетело что-то кривое» и надо приводить в порядок перед сохранением/рендером). Такие утилитарные штуки обычно окупаются быстрее всего — поставил, подключил, забыл: PHP HTML Cleaner: история разработки и обзор Composer-пакета для очистки HTML
😁9👍4
Я снова поймал себя на том, что «оптимизация PHP» для многих всё ещё = «поставь Nginx и помолись». Тут ребята сравнили WordPress на OpenLiteSpeed против классического LEMP на реальных нагрузках (RPS/latency/TTFB/CPU/RAM) — отличный материал, чтобы спорить не вкусом, а цифрами: WordPress с OpenLiteSpeed vs классический LEMP: реальные бенчмарки

Если у вас microservice/database-per-service, то «дайте мне просто побольше железа» очень быстро превращается в дорогую привычку. Понравилось, что автор раскладывает sizing PostgreSQL по шагам (диск/RAM/CPU + базовые параметры на старте), чтобы потом не выяснять, что вы год платили за воздух: Считаем ресурсы под PostgreSQL

Мини-напоминалка из серии «казалось бы, очевидно, но…»: как в PHP корректно понять, определена ли переменная, и не попасться на классическую ловушку isset() с null (плюс зачем это внезапно важно, когда к проекту прикручен статанализ): Как в PHP узнать определенна ли переменная (для версии PHP 7.4 и выше)

Классный практический разбор по PostgreSQL: как совместить обычный поиск, полнотекстовый и «семантический» (и почему наивные подходы начинают разваливаться на реальных данных). Если вы делаете поиск в PHP-приложении и думаете «вынесу в отдельный сервис потом», вот тот самый «потом», которое лучше наступить заранее: Создание системы по управлению цифровыми активами для базы данных PostGIS. Часть 2. Работа с текстом

Для тех, кто любит держать руку на пульсе: свежий обзор январского коммитфеста PostgreSQL 19 — что обсуждали, что движется, и какие изменения маячат на горизонте (полезно хотя бы понимать, куда едет платформа, на которой у нас половина продов): PostgreSQL 19: Часть 4 или Коммитфест 2026-01
👍4
1. DDD и CQRS на PHP без Symfony — автор собрал «лёгкий стек» из трёх пакетов (DI-контейнер, DataMapper поверх PDO и PSR-15 роутер) и показал, как на этом реально поднять DDD-приложение без вечной боли «домен отдельно, Doctrine-энтити отдельно». Мне особенно зашло, что упор не на «ИИ написал код», а на то, где проходит граница ответственности: архитектуру всё равно держишь в голове ты, а ИИ может очень быстро закрыть имплементацию и тесты. DDD и CQRS на PHP без Symfony: собираем легковесный стек с помощью ИИ
2. Production-ready роутер за один вечер: PSR-15, атрибуты, middleware pipeline, кеш под OPcache, типизация и PHPStan level 9 — и всё это не как «пет-проект на выходные», а как библиотека, которую реально не стыдно тащить в проект (и даже публиковать). Полезно почитать хотя бы ради разборов edge-cases и того, как автор заставлял ИИ не просто генерить код, а проходить статанализ/тесты до зелёного. Как я написал production-ready PHP-роутер за один вечер с помощью ИИ
3. Кейс из Битрикса, но по сути про архитектуру синка и поиск: как не превратить 85 дилерских сайтов в SEO-дубли при централизованном каталоге, как разделить поля на «Lock/Edit» (и реально защитить редактируемое от перезаписи фидом), плюс отдельная вкусная часть про Manticore Search для артикулов со спецсимволами (когда дефисы/точки/слэши ломают поиск). Это прям «земля и прод», где PHP-код — лишь верхушка айсберга интеграционной логики. Федеративная архитектура дилерских сайтов: Bitrix, Manticore Search и OpenAI Batch API для каталога на 50k SKU
4. Ещё один практичный интеграционный кейс: портал запчастей + REST API для дилеров (разные 1С, разные структуры данных), где ключевая идея — «эталонный справочник» и минималистичный API вместо попыток “свести всё магией”. Понравилось, что автор не романтизирует: показывает ограничения (КИИ, стек, безопасность), и как из этого всё равно собрать систему, которая живёт и обновляет остатки/статусы без ручного ада. Интеграция 40+ дилеров через REST API: как мы построили портал запчастей крупнейшего сельхозпроизводителя в России
🔥4
Я присмотрелся к схеме «Laravel в проде», где Traefik стоит на входе, а внутри крутится FrankenPHP (и да, это уже не «классический PHP на каждый запрос»). Идея простая: разнести web/воркеры, нормально завернуть всё в Docker Compose, добавить healthcheck’и — и получить инфраструктуру, которую не стыдно показывать SRE. Вот тут разбор со схемой и практическими деталями: Архитектура Laravel для продакшена: Traefik + FrankenPHP

Понравился кейс «RAG на PHP», потому что он без магии: как быстро собрать внутреннюю базу знаний, где PHP (Symfony) не просто «вяжет шаблоны», а реально участвует в пайплайне поиска. Автор показывает, как жить с чанкингом, гибридным поиском в Qdrant и что делать, чтобы MVP не развалился на первом же “а давайте ещё вот этот тип документов”. Забираю как готовый маршрут “сегодня вечером поднять прототип”: RAG на PHP + Qdrant: быстрый MVP для внутренней базы знаний

Я залип на разбор роутинга в Waypoint: там не «мы написали ещё один роутер», а инженерная попытка выжать максимум из алгоритмов + OPcache shared memory, и при этом не упасть в рефлексию на каждом запросе. Особенно цепляет трёхуровневый матчинг (хеш + trie + fallback) и подход к генерации кода под кеш. Если вы любите ковырять внутренности фреймворков/либ — это прям вкусно: Как устроен роутинг в Waypoint: три уровня матчинга, zero-Reflection dispatch и кеш через OPcache shared memory

Я давно люблю истории из серии «всё зелёное, а система уже полумёртвая», и тут прям такая: стойка деградирует, реплика отваливается, отказоустойчивость исчезает, а 5xx почти ноль — и поэтому никто не кричит “инцидент!”. Хороший короткий чек по тому, почему одних HTTP-метрик недостаточно и как незаметно потерять safety net на базе. Применимо к любому PHP-продакшену с PostgreSQL: Когда стойка умирает, а 5xx остаётся нулевым. Разбор скрытой деградации PostgreSQL
5
Я поймал себя на мысли, что мы часто описываем «схему данных» сразу в трёх местах (DTO/validator/OpenAPI), а потом героически синхронизируем. Тут предлагают отдельный DSL под контракты данных — language-agnostic и без привязки к протоколу. Даже если не брать инструмент целиком, идеи про единый источник правды для схем можно утащить в любой PHP-проект. Scedel: DSL для описания схем данных

Если у вас PHP-приложение всё ещё живёт на MySQL 5.7 «потому что работает», вот очень приземлённый способ перестать спорить на уровне веры и посмотреть на разницу с 8.0 через реальные нагрузки и метрики. Мне особенно нравится, когда сравнение не «в вакууме на бенчмарке», а с оговорками, где обновление реально даст профит, а где — только головную боль. MySQL 5.7 vs 8.0 в Yandex Cloud: что изменилось на практике

Тема не «про PHP напрямую», но для бэкендера около PHP полезная: что будет, если внутрь PostgreSQL начать аккуратно протаскивать C++-абстракции, и где за это придётся платить. Читается как заметки человека, который реально пожил в кодовой базе Postgres и пытается сделать жизнь разработчика проще, не превратив всё в зоопарк. С++ внутри PostgreSQL: удобство против традиций

История про open source API, но я здесь за кусок про ускорение поиска в PostgreSQL: триграммы/GIN и вот это всё, когда «вроде работает», а потом находишь индекс и внезапно получаешь почти x2. Люблю такие статьи за честные «грабли» и за то, что после них хочется пойти и проверить свои самые медленные запросы в проекте. Как я оптимизировал Postgres почти в 2 раза и что из этого вынес
👍31
Symfony Init — генератор стартового Symfony-проекта. Удобный способ быстро собрать базовую конфигурацию (версия PHP, сервер, БД/кэш, популярные пакеты) и сразу получить готовый проект под Docker.

HA-кластер MySQL с Keepalived + Orchestrator. Пошаговый разбор, как организовать отказоустойчивость с VIP и автоматическим промоушеном реплики, включая важные нюансы про split-brain и semi-sync.

Fastpath-блокировки и PostgreSQL 18. Объяснение причины ожиданий LWLock:LockManager и того, как изменения в PG18 уменьшают конкуренцию на блокировках при сложных схемах и большом числе индексов.
🔥5