Пятиминутка PHP
رفتن به کانال در Telegram
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps Автор: @petrmyazin
نمایش بیشتر2 813
مشترکین
-324 ساعت
-57 روز
-330 روز
آرشیو پست ها
2 813
Поставил задачу для ИИ-агента валидировать JSON по схеме.
Он написал Python код непосредственно внутри PHP кода (в HEREDOC строке) и вызывал через exec!
Это какой-то саботаж, я считаю! Спасибо, что не перевёл мой проект на Go 🤣
2 813
Я мало касаюсь фронтенда и ранее не работал с Playwright для e2e тестирования. Всегда не хватало времени, чтобы попробовать и разобраться.
Теперь, благодаря ИИ-инструментам, настроить и запустить Playwright стало проще: ставлю задачу codex cli, оно само там что-то устанавливает, настраивает, запускает.
Сейчас читаю логи работы codex и ужасаюсь, сколько подводных камней и нюансов с запуском тестов в headless браузере! Хорошо что я не полез в это разбираться руками и сэкономил себе кучу времени и нервов.
Вы только почитайте эти логи (оформил ниже как цитаты)! Раньше пришлось бы разгребать эти вопросы вручную поиском на StackOverflow. Как же тяжело было фронтендерам до появления современных ИИ-агентов 🫨
Playwright wrapper есть, но у файла нет exec-bit. Это не блокер: запущу его через bash, затем открою страницу и пройду весь сценарий в headless-режиме с живой проверкой DOM и console/pageerror.Нет exce-bit? 🤡
С текущим wrapper есть странность: отдельные одноразовые вызовы не сохраняют browser session. Обойду это через один живой PTY-сеанс shell и выполню команды Playwright последовательно в одной среде, чтобы не терять состояние между open, snapshot, click и fill.Живой PTY-сеанс shell? Серьёзно? 🤯
С playwright-cli оказался нюанс именно в named sessions. Проверяю рабочий путь без именованной сессии и в одном shell, чтобы не тратить время на сам инструмент: если стандартный open -> snapshot работает, дальше иду по e2e уже этим маршрутом.Вспомнил анекдот "... но есть нюанс" 😂
2 813
🧭 Разбираем современный PHP вместе с Podlodka PHP Crew
PHP-стек может устаревать незаметно: решения вроде бы работают, но скорость разработки снижается, стоимость поддержки растёт, а количество возможностей сокращается.
💡 Эксперты Podlodka PHP Crew собрали онлайн-конференцию «Современный стек PHP-разработки», чтобы разобраться, как всё устроено сегодня.
🗓С 20 по 24 апреля участники:
• изучат, как сегодня запускают PHP-приложения (worker mode, новые рантаймы, FrankenPHP),
• посмотрят, как изменилась инфраструктура и что пора выкинуть из Docker-стека,
• обсудят, как реально применять AI-агентов в разработке (не только писать код, но и расследовать баги и планировать изменения),
• разберут практические кейсы (например, в онлайн-режиме будут запускать мультиплеерную игру на PHP с Temporal и RoadRunner),
• и в целом поймут, какие инструменты и подходы действительно стоит внедрять в 2026.
Формат — пять дней живых Zoom-сессий по утрам и вечерам, закрытое комьюнити в Telegram и общение со спикерами.
Если хотите обновить свой стек и лучше понимать, куда движется разработка на PHP — обязательно присоединяйтесь👇
🎟Early-bird билеты доступны до 13 апреля
А по промокоду php_crew_8_POtgy1 получите скидку🎁
2 813
Как быстро и эффективно сделать ИИ-агента для бизнеса?
Делюсь реальной историей.
🏗️ Задача: есть внутренняя система учёта и документооборота с веб-интерфейсом, естественно написана на PHP!
Хотим добавить ИИ-помощника для сотрудников прямо внутри системы. Возможно, это будет какой-то чат внутри системы или иной способ взаимодействия с ИИ.
Один из практических сценариев: пришел счёт на оплату от контрагента, этот счёт надо проверить на соответствие тарифам, понять сроки оплаты и условия подписания закрывающих документов. Если данные в системе грамотно разложены по полочкам и формальным признакам, то ИИ здесь не нужен, можно автоматизировать проверку детерминированным алгоритмом. Ключевое слово: «если».
Отложим вопрос классической автоматизации и попробуем построить инструмент для бизнеса на базе LLM.
1️⃣ Версия 1: «Всё в контекст»
- менеджер пишет задачу (промпт) в наш встроенный ИИ-чат из карточки документа
- на бэкенде к вопросу менеджера прикрепляется вся информация по данному документу из БД в формате JSON
- этот достаточно большой запрос, состоящий из исходного вопроса и всей информация из БД по текущей сущности уходит в LLM
- спустя 15-60 секунд приходит ответ от LLM, показываем его в чате менеджеру
⚠️ Проблемы версии 1:
…
Это Preview нового поста по подписке «Петр Мязин | PHPeople» ☝️
Подпишись через @phpeople_bot и узнаешь:
- Что всего было 3 версии
- Какое решение в итоге оказалось ультра-эффективным
- При этом кода стало в х10 раз меньше
2 813
Давно я не заглядывал в настройки окружений Codex Cloud - облачная платформа для AI программирования. Сейчас заглянул и теперь там есть PHP 8.5 из коробки 🎉
Что это за «окружения» и зачем они нужны?
- Codex Cloud - это часть продукта ChatGPT для программирования
- Заходите в свой chatgpt.com, в меню слева переходите по ссылке “Codex Cloud”
- Далее нужно предоставить доступ к github репозиторию вашего проекта
- После этого создать так называемое «окружение» (environment) - это некий docker контейнер, для которого можно накликать несколько опций и список предустановленных пакетов
- также можно описать свой Setup Script, в котором выполнить установку дополнительных пакетов (например расширений PHP) и выполнить composer install
- Теперь можно описать задачу в специальном teaxtarea -> будет запущено настроенное окружение с предустановленными пакетами, внутрь будет клонирован репозиторий с github, запущен Setup Script, после чего AI-агент Codex начнёт работу над задачей.
2 813
Установил PhpStorm 2026.1 (https://blog.jetbrains.com/phpstorm/2026/03/phpstorm-2026-1-is-now-out/)
Сразу открылась вкладка "What's New in PhpStorm 2026.1" - в прошлых версиях такой вкладки не было (или я не замечал?), и эта новинка мне нравится! Почему бы не почитать, что нового? Возможно, такая автоматическая вкладка покажется навязчивым материалом и "лишним окном которое мешает работать", но и закрыть не сложно.
Радовался не долго: на этой странице прокрутка не работает! Ни с клавиатуры, ни трекпадом, нет вертикального scroll. Тупо читаю заголовок и рассматриваю два скриншота (которые целиком не уместились) 🤦♂️
Как можно было такое упустить? Перезапускаю PhpStorm, открываю эту страницу заново через Help -> What's new in PhpStorm и нашел корень проблемы.
При первом открытии страницы всплывает диалог "Введите username и password от proxy".
• Далее я иду в программу KeePassXC (где у меня некоторые пароли, но это секрет)
• копирую логин и пароль в буфер обмена. Да, копирую сразу два значения, потом могу вставить их по очереди через RayCast буфер обмена.
• возвращаюсь в PhpStorm, а диалога с параметрами Proxy уже нет! Видимо, диалог ушел куда-то на задний план и как его вернуть на передний план не понятно. И страница без прокрутки в зависшем состоянии.
Вот такие edge cases баги бывают.
С поддержкой Proxy в PhpStorm вообще беда:
• несколько версий подряд не работала кнопка "Check connection" в настройках Proxy - всегда выдавала результат, что неверный логин пароль, хотя они были верные и по факту proxy работал. В текущей 2026.1 версии починили, только что проверил.
• Proxy работал для всех функций в PhpStorm, кроме Junie - этот плагин, видимо, ходил в сеть как-то мимо Proxy и в итоге не работал.
• username и password у меня сохранены в Settings -> Proxy, но открытие страницы "What's New in PhpStorm 2026.1" каждый раз просит ввести их заново!
То тут, то там в PhpStorm что-то отваливается и забаговано. Но альтернативы ещё хуже, как ни крути.
2 813
Вышел Laravel 13 🎉
Обновился без проблем c Laravel 11 на Laravel 13 за один промпт в codex.
Чтобы было повеселее, после обновления Laravel ещё заменил spatie/ignition (пакет для красивого отображения ошибок) на yiisoft/error-handler 😊
Вопрос: если с каждым обновлением Laravel менять по одному пакету в проекте на пакет из набора Yii3, то на какой версии Laravel я полностью перейду на Yii3? 🧐
2 813
К хорошему быстро привыкаешь.
Пример из жизни: в 2021 году вышел iPhone 13 с частотой обновления экрана 120 Гц. До этого iPhone имели частоту обновления 60 Гц. Казалось, и 60 Гц хватит всем, зачем 120?
📲 Сначала я визуально не почувствовал перехода 60 Гц -> 120 Гц.
Но спустя какое-то время включил режим энергосбережения, iPhone включил частоту 60 Гц и разница стала заметна: жутко неприятные анимации, особенно скролл. До сих пор не люблю режим энергосбережения из-за этого.
Вчера случилась похожая история с эмулятором терминала.
Знаете, есть модные терминалы которые подчёркивают свою скорость рендеринга благодаря отрисовке на GPU:
• Warp – написан на Rust, заявляют 144+ FPS на 4K мониторах
• WezTerm – написан на Rust, позиционируется как «GPU‑accelerated terminal»
• Ghostty – написан на Zig, заявляет использование нативного UI и GPU‑ускорения рендеринга
• Alacritty - написан на Rust, «GPU accelerated terminal emulator» с упором на простоту и производительность
• Kitty – написан на Cи (sic!) и тоже «GPU‑based terminal», отдельно выделяют ускоренный рендеринг и свой графический протокол
Опять же, казалось бы, зачем вообще нужна какая-либо оптимизация рендеринга в терминале? Это же не компьютерные игры, тут просто текстовый вывод работы каких-то программ и команд.
Я давно пользуюсь Warp, но вечера попробовал cmux.
🔥 В cmux инетрфейс заточен на работу с ИИ-агентами, удобное деление на проекты и вкладки - интересный заход!
https://cmux.com
🐌 Но вот беда: ужасный дёрганый тормозящий скролл! Порой мне кажется, даже буквы при печати появляются на экране недостаточно быстро (или я уже придираюсь?). В общем, ощущения от визуальной составляющей отвратительные. Я привык к 144+ FPS в терминале.
А по основным фичам интерфейса cmux с делением на проекты и вкладки внутри проектов всё очень нравится! В cmux действительно удобнее работать с ИИ-агентами, чем в терминале с обычными табами.
2 813
Repost from AI for Devs
Anthropic удвоили лимиты вайбкодерам РФ и СНГ 😁
С 13 по 27 марта лимиты Claude удваиваются в непиковые часы. Для Штатов это ночь и утро, а для нас — почти весь рабочий день и вечер.
По Москве двойной лимит работает с 22:00 до 16:00 следующего дня. То есть можно спокойно вайбкодить с утра до 16:00, потом шестичасовой перерыв, и с 22:00 снова двойная порция токенов.
Распространяется на все планы, кроме Enterprise. Включается автоматически, ничего дополнительно делать не нужно.
@ai_for_devs
2 813
Долгожданный выпуск про DDD. Местами даже получились дебаты :) Смотрим, слушаем, наслаждаемся!
https://www.youtube.com/watch?v=03FnrgYLkV8
Альтернативные ссылки: Аудио | vk
2 813
Слушал подкаст про DDD.
Ведущий рассказал пример неудачного проектирования, когда в таблице "Заказы" оказалось 150+ полей (очень много).
На этом моменте мне захотелось сказать Hold my beer...
Открываю инспектор БД и смотрю таблицу shipment в своём проекте: 482 колонки, 46 foreign keys!
В одной таблице все виды перевозок:
• авто
• авиа
• море
• Ж/Д
• мультимодальные (несколько видов транспорта)
• и даже таможенное оформление как отдельный вид перевозки!
От такого "DDD" даже у нейросети контекст отвис 😂
2 813
🔥 4 RFC в истории PHP, которые провалились буквально из-за пары голосов
В языке PHP многие фичи, которые сегодня кажутся очевидными, сначала не проходили голосование RFC. Иногда не хватало буквально нескольких голосов.
Вот несколько показательных примеров.
---
1️⃣ Typed Properties (2016)
Сегодня это нормальная часть языка:
class User {
public int $id;
}
Но первая версия RFC провалилась.
Результат голосования:
Yes: 24 No: 17На первый взгляд — победа. Но для этого RFC требовалось 2/3 голосов. Через несколько лет предложение переработали — и Typed Properties появились в PHP 7.4. Сегодня это одна из самых используемых возможностей языка. --- 2️⃣ Scalar Type Hints До PHP 7 нельзя было писать:
function sum(int $a, int $b)
Можно было типизировать только:
* array
* callable
* классы
Первая версия RFC по scalar types провалилась буквально на грани.
Типичный результат одного из голосований:
Yes: 31 No: 25До порога 2/3 голосов опять немного не дотянули. В итоге появился компромисс:
declare(strict_types=1);
И scalar types всё-таки попали в PHP 7.0.
---
3️⃣ Generics
Одна из самых ожидаемых фич PHP до сих пор.
Идея:
class Collection<T> {
public function add(T $item) {}
}
Generics дают:
• сильную типизацию
• безопасные коллекции
• лучшее автодополнение IDE
Главная проблема — сложность реализации.
Generics требуют серьёзных изменений:
• type system
• runtime
• reflection
• opcache
Поэтому обсуждение этой фичи продолжается уже много лет.
---
4️⃣ Named Arguments
Сегодня можно писать так:
setcookie(
name: "test",
expires: time() + 3600
);
Но первая версия RFC была отклонена.
Разработчики опасались:
• ломать старые API
• сложности в call stack
• несовместимости с variadic функциями
После переработки RFC всё-таки приняли, и Named Arguments появились в PHP 8.0.
---
💡 Интересный факт
В internals есть шутка:
> RFC не умирает — он просто уходит на переписывание.
Большинство крупных фич PHP проходят примерно такой путь:
1️⃣ первая версия RFC проваливается
2️⃣ идею перерабатывают
3️⃣ через несколько лет она всё-таки попадает в язык2 813
В начале марта открыто голосование по RFC ValueError Conversions для PHP 8.6, которое предлагает заменить множество предупреждений (E_WARNING) на ValueError, когда функции получают некорректные значения.
Пример:
<?php
// Current behavior (may hang on some systems, e.g. macOS)
var_dump(copy("source.txt", "")); // bool(false)
// After (proposed behavior)
try {
copy("source.txt", "");
} catch (ValueError $e) {
echo $e->getMessage();
// copy(): Argument #2 ($to) must be a non-empty valid path
}
// PHP ≤ 8.5: return false
// PHP 8.6 (proposed): ValueError exception
?>
https://discourse.thephp.foundation/t/php-dev-rfc-vote-valueerror-conversions-for-php-8-6/5206
Голосование открыли — но сразу нашли нарушения правил.
• нет обязательной опции Abstain (воздержаться)
• не было “Intent to Vote” объявления
• RFC обсуждали меньше минимального cooldown-периода (14 дней)
• markdown-разметка голосования в wiki была сломана, из-за неправильных отступов варианты голосования не отображались2 813
Laracon EU 2-3 марта 2026.
Сейчас Live на YouTube панельная дискуссия о направлении развития Laravel и экосистемы: https://www.youtube.com/live/YJmuKPk3d9M?feature=shared
2 813
Оказывается в апреле 2026 заканчивается поддержка MySQL 8.0
Хорошие новости: перейти на следующую LTS версию MySQL 8.4 должно быть достаточно просто, несовместимых изменений очень мало: https://dev.mysql.com/doc/refman/8.4/en/upgrading-from-previous-series.html
🆕 Я сделал краткую выжимку «что нового» через Perpelxity:
Ключевые улучшения в 8.4 (относительно 8.0)
Производительность InnoDB
•
innodb_io_capacity: 200 → 10000 (учёт SSD).[percona]
•ется поддержка MySQL 8.0
16MB → 64MB.
•преле 2026 заканчиваетс fsync → O_DIRECT.
• 2026 заканчивается поддерж all → none (быстрее на флэш).
• Автообновление гистограмм (`ANALYZE TABLE` работает автоматически).[opennet +1]
• innodb_buffer_pool_in_core_file: ON → OFF (меньше дампов).
Репликация и GTID
• GTID-теги: можно метить группы транзакций для аудита/отслеживания.[percona]
• SOURCE_RETRY_COUNT: 60 → 10 (быстрее failover).
• Новые колонки вжка MySQL 8.0
Хорошие Оказывается в аОказывается в апрОказывается в апреле 2026 з
• Репликатор всегда используетчивается поддержка MySQL(убраны старые варианты).[mysql]
Безопасность и дефолты
•.0
Хорошие новости: переустарел, по умолчанию2026 заканчивается поддер(как в 8.0, но строже).[spec-zone]
•тся поддержка MySQL 8 1GB → 3% от RAM (1-4GB).
• Убраны legacy-опции репликации (`log_bin_use_v1_events`, `--relay-log-info-file`).
Ставь лайк, если используешь MySQL.
Ставь дизлайк, если на PostgreSQL.
Fight❗️
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
