🧩 Composer scripts vs Makefile — что выбрать для PHP-проектов?
Каждый из нас хоть раз приходил в проект и задавал одни и те же вопросы:
🌀 «Как тут запускаются тесты?»
🌀 «Какой линтер у вас — Pint или PHP-CS-Fixer?»
🌀 «Где вообще список команд?»
Хаос в командах — типичная боль, особенно когда у каждого своя консольная магия.
Решение простое: централизуйте команды качества кода.
🔹 Composer scripts — встроенный, лёгкий, без зависимостей.
Идеален для небольших или чисто PHP-проектов.
🔹 Makefile — гибкий, мощный, автоматизация на стероидах.
Подходит, если в проекте намешано PHP + JS + Docker + CI/CD.
📊 Когда что выбрать
— Monorepo или мультистек → Makefile
— Малый проект или пакет → Composer scripts
💡 Главное — не инструмент, а принцип:
👉 Читать статью
Библиотека пхпшника
#элементарный_выбор
Каждый из нас хоть раз приходил в проект и задавал одни и те же вопросы:
🌀 «Как тут запускаются тесты?»
🌀 «Какой линтер у вас — Pint или PHP-CS-Fixer?»
🌀 «Где вообще список команд?»
Хаос в командах — типичная боль, особенно когда у каждого своя консольная магия.
Решение простое: централизуйте команды качества кода.
🔹 Composer scripts — встроенный, лёгкий, без зависимостей.
Идеален для небольших или чисто PHP-проектов.
composer all-check — и всё: Pint, Rector, PHPStan, тесты.🔹 Makefile — гибкий, мощный, автоматизация на стероидах.
Подходит, если в проекте намешано PHP + JS + Docker + CI/CD.
make all-check — и порядок наведен.📊 Когда что выбрать
— Monorepo или мультистек → Makefile
— Малый проект или пакет → Composer scripts
💡 Главное — не инструмент, а принцип:
сделай запуск проверок простым, чтобы никто не ленился их запускать.
👉 Читать статью
Библиотека пхпшника
#элементарный_выбор
Парсер JSON
Парсер с нулевыми зависимостями для чтения больших JSON из любого источника с эффективным использованием памяти.
🔗 Github
Библиотека пхпшника
#инструменты
Парсер с нулевыми зависимостями для чтения больших JSON из любого источника с эффективным использованием памяти.
🔗 Github
Библиотека пхпшника
#инструменты
👍6🔥2
🚀 How to: Создать Telegram-бота и отправить сообщения с помощью Laravel 12
В этой статье рассматривается процесс создания Telegram-бота и его интеграции с Laravel 12. Пройдите пошаговую инструкцию по получению API токена, настройке пакета
👉 Ссылка на статью
Библиотека пхпшника
В этой статье рассматривается процесс создания Telegram-бота и его интеграции с Laravel 12. Пройдите пошаговую инструкцию по получению API токена, настройке пакета
irazasyed/telegram-bot-sdk и отправке сообщений через вашего бота. Этот гайд подойдет как для новичков, так и для опытных разработчиков, желающих добавить функциональность Telegram в свои приложения и улучшить взаимодействие с пользователями.👉 Ссылка на статью
Библиотека пхпшника
👍3😁1
🎁 Конкурс от Proglib Academy!
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
🚀 Как построить надёжную шину событий с Redis Streams в PHP
Redis Streams давно перестали быть экзотикой и стали нормальным способом передачи событий между сервисами. В PHP есть два популярных подхода для работы с ними: Amp с неблокирующим I/O и Swoole с корутинами. Оба подхода позволяют реализовать устойчивые consumer-группы, ручной ack, автоматическое перенаправление зависших сообщений, backpressure, экспоненциальные ретраи и дед-лейтер.
🛠️ Что строим
Задача — создать шину событий заказов. Продюсер записывает события в
⚙️ Варианты реализации
Amp: Неблокирующее чтение с использованием
Swoole: Использование корутин с каналом как семафором, Redis из
🔁 Экспоненциальные ретраи
Redis Streams не поддерживают отложенные сообщения, но можно реализовать экспоненциальные ретраи с использованием ZSET. При ошибке вы подтверждаете задачу и кладёте её в
📊 Мониторинг и масштабирование
Для мониторинга используйте команду
🔗 Хабр
Библиотека пхпшника
Redis Streams давно перестали быть экзотикой и стали нормальным способом передачи событий между сервисами. В PHP есть два популярных подхода для работы с ними: Amp с неблокирующим I/O и Swoole с корутинами. Оба подхода позволяют реализовать устойчивые consumer-группы, ручной ack, автоматическое перенаправление зависших сообщений, backpressure, экспоненциальные ретраи и дед-лейтер.
🛠️ Что строим
Задача — создать шину событий заказов. Продюсер записывает события в
orders:events с помощью команды XADD с триммингом. Несколько воркеров читают из consumer-группы orders:cg с использованием XREADGROUP в блокирующем режиме, подтверждают обработку через XACK, а зависшие записи перенаправляются на активного потребителя через XAUTOCLAIM. Если событие стабильно не обрабатывается, оно отправляется в orders:events:dlq и больше не участвует в основном потоке. Мониторинг задержки группы осуществляется через XINFO GROUPS, а хвосты периодически очищаются.⚙️ Варианты реализации
Amp: Неблокирующее чтение с использованием
XREADGROUP, ограничение параллельной обработки с помощью LocalSemaphore, подтверждение XACK пачками. Для подбора зависших сообщений параллельно запускается цикл XAUTOCLAIM.Swoole: Использование корутин с каналом как семафором, Redis из
ext-phpredis. Параллельная обработка ограничивается размером канала.🔁 Экспоненциальные ретраи
Redis Streams не поддерживают отложенные сообщения, но можно реализовать экспоненциальные ретраи с использованием ZSET. При ошибке вы подтверждаете задачу и кладёте её в
ZSET orders:retry со значением score = now + backoffMs. Отдельная корутина периодически извлекает задачи из ZSET и повторно добавляет их в основной стрим с увеличенным счётчиком попыток.📊 Мониторинг и масштабирование
Для мониторинга используйте команду
XINFO GROUPS, чтобы отслеживать количество записей, которые ещё не доставлены группе. Если лаг стабильно растёт, добавляйте консьюмеров. Если лаг «пилит» около нуля, можно уменьшить число воркеров.🔗 Хабр
Библиотека пхпшника
👍5
🧠 PHP-лайфхак: подключи PHPStan или Psalm для статического анализа
Хочешь ловить баги до запуска кода? Используй статический анализ.
Это инструмент, который проверяет твой PHP-код на ошибки, несоответствия типам и подозрительные конструкции — без выполнения программы.
🔍 Как это работает
🧩 Установи PHPStan:
Запусти анализ:
Можно использовать уровни от 0 до 9 — начни с 5–6, чтобы не утонуть в предупреждениях.
⚡️ Что даёт PHPStan / Psalm
🐞 Находит ошибки типов ещё до запуска кода
🚫 Предупреждает о неиспользуемых переменных и мёртвом коде
🧩 Помогает навести порядок в архитектуре
🔒 Снижает риск багов при рефакторинге
💡 Интеграция с Composer и CI/CD
Добавь команду в
Теперь можно запускать проверку просто:
А в CI — добавить шаг перед деплоем, чтобы ни один коммит с ошибками типов не ушёл в прод.
🧠 Совет: если проект большой — начни с "--level=5" и постепенно повышай. Так ты постепенно приведёшь код в порядок без боли.
Библиотека пхпшника
Хочешь ловить баги до запуска кода? Используй статический анализ.
Это инструмент, который проверяет твой PHP-код на ошибки, несоответствия типам и подозрительные конструкции — без выполнения программы.
🔍 Как это работает
🧩 Установи PHPStan:
composer require --dev phpstan/phpstan
Запусти анализ:
./vendor/bin/phpstan analyse src --level=max
--level=max включает максимально строгую проверку.Можно использовать уровни от 0 до 9 — начни с 5–6, чтобы не утонуть в предупреждениях.
⚡️ Что даёт PHPStan / Psalm
🐞 Находит ошибки типов ещё до запуска кода
🚫 Предупреждает о неиспользуемых переменных и мёртвом коде
🧩 Помогает навести порядок в архитектуре
🔒 Снижает риск багов при рефакторинге
💡 Интеграция с Composer и CI/CD
Добавь команду в
composer.json:"scripts": {
"analyze": "phpstan analyse src --level=max"
}Теперь можно запускать проверку просто:
composer analyzeА в CI — добавить шаг перед деплоем, чтобы ни один коммит с ошибками типов не ушёл в прод.
🧠 Совет: если проект большой — начни с "--level=5" и постепенно повышай. Так ты постепенно приведёшь код в порядок без боли.
Библиотека пхпшника
🥱2
⌨️ Топ-вакансий по PHP за неделю
Backend Tech Lead / техлид — от 300 000 ₽, Удалёнка (Москва)
PHP разработчик Junior / Middle — от 130 000 ₽, Удаленка (Москва)
PHP-разработчик (Symfony) — от 160 000 ₽, Удалёнка (Москва)
Middle+ php developer — 2,500 — 3,500 $, Гибрид (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Backend Tech Lead / техлид — от 300 000 ₽, Удалёнка (Москва)
PHP разработчик Junior / Middle — от 130 000 ₽, Удаленка (Москва)
PHP-разработчик (Symfony) — от 160 000 ₽, Удалёнка (Москва)
Middle+ php developer — 2,500 — 3,500 $, Гибрид (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
На реддите обсуждают интересный вопрос:
Есть ли ещё open-source IDE, где нет встроенного искусственного интеллекта?
Автор жалуется, что почти каждая современная среда разработки теперь старается «встроить помощника» — автодополнение на базе LLM, AI-чат в сайдбаре, умные подсказки, сбор кода для тренировки моделей и т.д.
Даже если функция выключена — она всё равно где-то рядом.
💬 Вы пользуетесь ИИ фишками в IDE? Или у вас припасён список пока ещё чистых инструментов? Делитесь в комментах 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🙂 В Laravel при создании записей с помощью
Библиотека пхпшника
#vardump
Factories вы можете использовать класс Sequence, чтобы заменить некоторые значения и применить к ним специальную логику.Библиотека пхпшника
#vardump
🥱5👍3
🎃 Хэллоуин в Proglib Academy: скидки, призы и... немного паники
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
🔧 XAMPP и PHP 8.5: Почему обновления идут не синхронно?
В обсуждении на Reddit затрагивается актуальная проблема: PHP 8.5 уже на подходе, а XAMPP до сих пор использует PHP 8.2.
🧩 Почему XAMPP отстаёт?
Отсутствие обновлений: Последняя версия XAMPP с PHP 8.2.12 была выпущена в ноябре 2023 года. С тех пор проект не обновлялся.
Снижение активности: XAMPP давно не обновлялся, и проект, по всей видимости, заморожен.
Проблемы с поддержкой: XAMPP не поддерживает PHP 8.3 и 8.4, что ограничивает возможности разработчиков.
🛠️ Как быть разработчикам?
Можно обновить PHP в XAMPP вручную, но это требует опрделенных навыков. 👉 Ссылка
💬 Ваше мнение
Как вы считаете, стоит ли продолжать использовать XAMPP в 2025 году? Или пришло время переходить на более современные решения?
Библиотека пхпшника
В обсуждении на Reddit затрагивается актуальная проблема: PHP 8.5 уже на подходе, а XAMPP до сих пор использует PHP 8.2.
🧩 Почему XAMPP отстаёт?
Отсутствие обновлений: Последняя версия XAMPP с PHP 8.2.12 была выпущена в ноябре 2023 года. С тех пор проект не обновлялся.
Снижение активности: XAMPP давно не обновлялся, и проект, по всей видимости, заморожен.
Проблемы с поддержкой: XAMPP не поддерживает PHP 8.3 и 8.4, что ограничивает возможности разработчиков.
🛠️ Как быть разработчикам?
Можно обновить PHP в XAMPP вручную, но это требует опрделенных навыков. 👉 Ссылка
💬 Ваше мнение
Как вы считаете, стоит ли продолжать использовать XAMPP в 2025 году? Или пришло время переходить на более современные решения?
Библиотека пхпшника
😁9
Forwarded from Книги для программистов
🙇♂️ Databases & SQL Roadmaps (2025)
Пошаговые гайды по изучению SQL, MongoDB и Redis, а также совершенствованию навыков в администрировании баз данных PostgreSQL.
🔗 Скачать
🐸 Книги для программистов
Пошаговые гайды по изучению SQL, MongoDB и Redis, а также совершенствованию навыков в администрировании баз данных PostgreSQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
💻 Подборка новостей по PHP за неделю:
🔹 PHP 8.3.27 и 8.4.14 — свежие обновления с исправлением ошибок и улучшением стабильности. Рекомендуется обновиться, чтобы обеспечить безопасность и надёжность приложений.
🔹 PHP 8.5.0 RC3 — третий релиз-кандидат PHP 8.5. Финальный выпуск всё ближе, команда PHP просит сообщество активно тестировать и сообщать о багах.
🔹Symfony 8.0.0-BETA1 — первая бета-версия Symfony 8.0 уже доступна для тестирования. Это шанс заранее проверить совместимость и оценить новые возможности фреймворка.
🔹 Symfony 7.4 (A Week of Symfony #982) — завершено добавление ключевых функций: внедрён FormFlow для многошаговых форм, улучшен CLI-вывод ошибок, устарели формат fluent PHP и генераторы config builder.
🔹 Symfony 7.3.5 — регулярное обновление текущей ветки с исправлениями и улучшениями.
Библиотека пхпшника
#свежак
🔹 PHP 8.3.27 и 8.4.14 — свежие обновления с исправлением ошибок и улучшением стабильности. Рекомендуется обновиться, чтобы обеспечить безопасность и надёжность приложений.
🔹 PHP 8.5.0 RC3 — третий релиз-кандидат PHP 8.5. Финальный выпуск всё ближе, команда PHP просит сообщество активно тестировать и сообщать о багах.
🔹Symfony 8.0.0-BETA1 — первая бета-версия Symfony 8.0 уже доступна для тестирования. Это шанс заранее проверить совместимость и оценить новые возможности фреймворка.
🔹 Symfony 7.4 (A Week of Symfony #982) — завершено добавление ключевых функций: внедрён FormFlow для многошаговых форм, улучшен CLI-вывод ошибок, устарели формат fluent PHP и генераторы config builder.
🔹 Symfony 7.3.5 — регулярное обновление текущей ветки с исправлениями и улучшениями.
Библиотека пхпшника
#свежак
❤3
💡 Совет по Laravel: Проверьте среду вашего приложения
Нам часто нужно проверять среду приложения. Хотя для этого можно использовать метод environment, Laravel поставляется с элегантными методами
Библиотека пхпшника
#vardump
Нам часто нужно проверять среду приложения. Хотя для этого можно использовать метод environment, Laravel поставляется с элегантными методами
isProduction и isLocal, которые позволяют делать это 🚀.Библиотека пхпшника
#vardump
👍3😁2👏1👾1
Разбираемся с DDD: как проектировать доменный агрегат, чтобы он не стал безразмерным
В больших PHP-проектах на DDD легко скатиться в один «всемогущий» агрегат, который держит всё и сразу. Итог — дорогая гидрация, лишняя память, сложные транзакции. На примере программы лояльности разберём, как держать границы агрегатов в порядке и не платить лишнего.
🔩 Главная мысль
Агрегат — это не «всё доменное сразу», а границы инвариантов, консистентности и транзакционности. Если объект должен меняться атомарно вместе с другим — это сигнал быть в одном агрегате. Если нет — связь по id и отдельные контексты.
Проблема 1: Границы
Чем больше «подтаскиваем» в агрегат, тем выше риск «один агрегат, чтобы править всеми».
✅ Держим в голове 3 правила:
Инварианты — всё, что нужно для их соблюдения, внутри агрегата.
Консистентность — объект никогда не бывает «наполовину валидным».
Транзакционность — меняются вместе ⇒ сохраняются вместе.
📌 Пример: уровни лояльности зависят от валюты начисления. Меняем валюту → должны атомарно сбросить требования уровней. Уровни — часть агрегата LoyaltyProgram.
А вот Discount может жить отдельно, если после активации ПЛ он больше не меняется вместе с программой (связь по id + доменный сервис для применения скидок).
Проблема 2: Цена (память/гидрация)
Десятки тысяч карт + логи изменений в памяти PHP — больно.
🧰 Рабочие варианты:
• Облегчённые структуры вместо коллекций — храним метаданные (id, пути, индексы), а не целые объекты; доменные события обеспечат сохранение нужных сущностей вместе с агрегатом.
• Транзакционность в Application-слое — карты вынимаем из репозитория снаружи, операции делаем через корень агрегата (инварианты в домене, транзакция — в use-case). Минус: немного падает cohesion.
• Ленивые коллекции — коллекция хранит id, при доступе к элементу бросает доменное событие, инфраструктура подгружает объект. Код домена остаётся чистым, гидрация — по требованию.
Чек-лист проектирования агрегата
Инвариант нарушается без X? → X внутри агрегата.
Объекты меняются атомарно? → вместе в агрегате.
Логика «применения» живёт там, где её нельзя обойти клиентским кодом.
Большие коллекции? → метаданные/ленивая загрузка/перенос транзакций в application.
Скидки/внешние сущности? → отделяйте контексты, связывайте по id, при необходимости используйте доменные сервисы.
—
⚠️ Анти-паттерн
«Корневой агрегат знает всё и держит всех» → взрыв памяти, сложные сохранения, нарушение SRP.
💬Обсудим в комментах: где вам приходилось резать агрегат и почему?
🔗 Хабр
Библиотека пхпшника
В больших PHP-проектах на DDD легко скатиться в один «всемогущий» агрегат, который держит всё и сразу. Итог — дорогая гидрация, лишняя память, сложные транзакции. На примере программы лояльности разберём, как держать границы агрегатов в порядке и не платить лишнего.
🔩 Главная мысль
Агрегат — это не «всё доменное сразу», а границы инвариантов, консистентности и транзакционности. Если объект должен меняться атомарно вместе с другим — это сигнал быть в одном агрегате. Если нет — связь по id и отдельные контексты.
Проблема 1: Границы
Чем больше «подтаскиваем» в агрегат, тем выше риск «один агрегат, чтобы править всеми».
✅ Держим в голове 3 правила:
Инварианты — всё, что нужно для их соблюдения, внутри агрегата.
Консистентность — объект никогда не бывает «наполовину валидным».
Транзакционность — меняются вместе ⇒ сохраняются вместе.
📌 Пример: уровни лояльности зависят от валюты начисления. Меняем валюту → должны атомарно сбросить требования уровней. Уровни — часть агрегата LoyaltyProgram.
А вот Discount может жить отдельно, если после активации ПЛ он больше не меняется вместе с программой (связь по id + доменный сервис для применения скидок).
Проблема 2: Цена (память/гидрация)
Десятки тысяч карт + логи изменений в памяти PHP — больно.
🧰 Рабочие варианты:
• Облегчённые структуры вместо коллекций — храним метаданные (id, пути, индексы), а не целые объекты; доменные события обеспечат сохранение нужных сущностей вместе с агрегатом.
• Транзакционность в Application-слое — карты вынимаем из репозитория снаружи, операции делаем через корень агрегата (инварианты в домене, транзакция — в use-case). Минус: немного падает cohesion.
• Ленивые коллекции — коллекция хранит id, при доступе к элементу бросает доменное событие, инфраструктура подгружает объект. Код домена остаётся чистым, гидрация — по требованию.
Чек-лист проектирования агрегата
Инвариант нарушается без X? → X внутри агрегата.
Объекты меняются атомарно? → вместе в агрегате.
Логика «применения» живёт там, где её нельзя обойти клиентским кодом.
Большие коллекции? → метаданные/ленивая загрузка/перенос транзакций в application.
Скидки/внешние сущности? → отделяйте контексты, связывайте по id, при необходимости используйте доменные сервисы.
—
⚠️ Анти-паттерн
«Корневой агрегат знает всё и держит всех» → взрыв памяти, сложные сохранения, нарушение SRP.
💬Обсудим в комментах: где вам приходилось резать агрегат и почему?
🔗 Хабр
Библиотека пхпшника
❤4
Forwarded from Библиотека задач по PHP | тесты, код, задания
Что произойдет, если в PHP файл подключить сам себя с помощью require_once?
Anonymous Quiz
28%
Выдаст ошибку рекурсии
61%
Повторное подключение будет проигнорировано
5%
Создаст бесконечный цикл подключения
6%
Зависит от содержимого файла
⚔️ Encryption vs Hashing в Laravel
🤯 Миф: Laravel использует
На деле — нет.
И вот почему 👇
🔐 APP_KEY отвечает за шифрование (Encryption)
Laravel применяет этот ключ для двустороннего шифрования — данные можно потом расшифровать.
Он защищает:
🔸 cookies
🔸 сессии
🔸 API-токены
🧩 Пример:
Меняете
потому что старые сессии больше нельзя расшифровать.
🧱 Хеширование (Hashing) — совсем другое
Хеш — необратимое преобразование.
Используется для хранения паролей, которые нужно проверить,
но никогда — восстановить.
🧩 Пример:
Laravel по умолчанию использует Bcrypt,
а при логине просто сравнивает хеши.
❗️
Он нужен только для шифрования данных, которые Laravel должен уметь расшифровать.
А
Библиотека пхпшника
🤯 Миф: Laravel использует
APP_KEY для хеширования паролейНа деле — нет.
И вот почему 👇
🔐 APP_KEY отвечает за шифрование (Encryption)
Laravel применяет этот ключ для двустороннего шифрования — данные можно потом расшифровать.
Он защищает:
🔸 cookies
🔸 сессии
🔸 API-токены
🧩 Пример:
Crypt::encryptString($token);
Меняете
APP_KEY → все пользователи выходят из системы,потому что старые сессии больше нельзя расшифровать.
🧱 Хеширование (Hashing) — совсем другое
Хеш — необратимое преобразование.
Используется для хранения паролей, которые нужно проверить,
но никогда — восстановить.
🧩 Пример:
Hash::make('password');Laravel по умолчанию использует Bcrypt,
а при логине просто сравнивает хеши.
❗️
APP_KEY не участвует в хешировании паролей.Он нужен только для шифрования данных, которые Laravel должен уметь расшифровать.
А
Hash::make() создаёт значение, которое невозможно вернуть обратно.Библиотека пхпшника
👍3❤1
📊 Состояние PHP в 2025
По итогам отчёта JetBrains «The State of PHP 2025» (опрос среди 1 720 разработчиков, для которых PHP — основной язык)
🔹 88% респондентов имеют более 3 лет опыта в PHP; самая большая группа — 6–10 лет.
🔹 56% работают в командах из 2–7 человек, 12% — работают самостоятельно.
🔹 58% не планируют переходить с PHP на другой язык в течение следующего года.
🔹 4% начали использовать PHP менее 6 месяцев назад (против 2% годом ранее); 72% работают с PHP более 4 лет.
🧠 Версии языка & экосистема
🔹 PHP 8.x используется у 89% разработчиков; PHP 7.x — 33%; версии 5.6 и раньше — 8%.
🔹 По фреймворкам и CMS: Laravel лидирует — 64%; WordPress — 25%; Symfony — 23%.
💻 Инструменты разработки
🔹 IDE/editor: доля PhpStorm или IntelliJ IDEA с PHP-плагином выросла до 68%; Visual Studio Code — 23%; новые игроки (например, Cursor) — 6%.
🔹 Уровень удовлетворённости: 53% пользователей PhpStorm дали 5★ (максимум), VS Code — 26%.
🔹 Отладка и тесты: 59% используют var_dump-подход, 39% — дебаггер (например, Xdebug).
🔹 Тестирование: PHPUnit — 50%; Pest — 17% (рост на 4 п.п.). Но 32% всё ещё не пишут тесты.
🔹 Инструменты качества кода: PHPStan — 36% (+9 п.п. за год); PHP CS Fixer — 30%; PHP_CodeSniffer — 22%; Rector — 10%. При этом 42% регулярно не используют ни одного такого инструмента.
🤖 ИИ и кодинг
🔹 95% разработчиков хотя бы пробовали AI-инструмент; 80% — используют регулярно.
🔹 Наиболее популярные: ChatGPT — 49% (в 2024 — выше); GitHub Copilot — 29%; JetBrains AI Assistant — 20% (утроился за год!).
🔹 72% планируют попробовать AI-кодинговых агентов в следующем году; только 8% считают, что они едва ли будут. Препятствия: заботы о конфиденциальности данных (44%), вопросы интеллектуальной собственности (24%), нехватка знаний (22%).
🎉 Дополнительно
🔹 FrankenPHP становится проектом, поддерживаемым PHP Foundation, и предлагает асинхронную обработку запросов в PHP.
🔹 В 2025-м языку PHP исполнилось 30 лет; онлайн-событие PHPverse собрало более 26 000 зрителей.
👉 Ссылка на оригинал
Библиотека пхпшника
#свежак
По итогам отчёта JetBrains «The State of PHP 2025» (опрос среди 1 720 разработчиков, для которых PHP — основной язык)
🔹 88% респондентов имеют более 3 лет опыта в PHP; самая большая группа — 6–10 лет.
🔹 56% работают в командах из 2–7 человек, 12% — работают самостоятельно.
🔹 58% не планируют переходить с PHP на другой язык в течение следующего года.
🔹 4% начали использовать PHP менее 6 месяцев назад (против 2% годом ранее); 72% работают с PHP более 4 лет.
🧠 Версии языка & экосистема
🔹 PHP 8.x используется у 89% разработчиков; PHP 7.x — 33%; версии 5.6 и раньше — 8%.
🔹 По фреймворкам и CMS: Laravel лидирует — 64%; WordPress — 25%; Symfony — 23%.
💻 Инструменты разработки
🔹 IDE/editor: доля PhpStorm или IntelliJ IDEA с PHP-плагином выросла до 68%; Visual Studio Code — 23%; новые игроки (например, Cursor) — 6%.
🔹 Уровень удовлетворённости: 53% пользователей PhpStorm дали 5★ (максимум), VS Code — 26%.
🔹 Отладка и тесты: 59% используют var_dump-подход, 39% — дебаггер (например, Xdebug).
🔹 Тестирование: PHPUnit — 50%; Pest — 17% (рост на 4 п.п.). Но 32% всё ещё не пишут тесты.
🔹 Инструменты качества кода: PHPStan — 36% (+9 п.п. за год); PHP CS Fixer — 30%; PHP_CodeSniffer — 22%; Rector — 10%. При этом 42% регулярно не используют ни одного такого инструмента.
🤖 ИИ и кодинг
🔹 95% разработчиков хотя бы пробовали AI-инструмент; 80% — используют регулярно.
🔹 Наиболее популярные: ChatGPT — 49% (в 2024 — выше); GitHub Copilot — 29%; JetBrains AI Assistant — 20% (утроился за год!).
🔹 72% планируют попробовать AI-кодинговых агентов в следующем году; только 8% считают, что они едва ли будут. Препятствия: заботы о конфиденциальности данных (44%), вопросы интеллектуальной собственности (24%), нехватка знаний (22%).
🎉 Дополнительно
🔹 FrankenPHP становится проектом, поддерживаемым PHP Foundation, и предлагает асинхронную обработку запросов в PHP.
🔹 В 2025-м языку PHP исполнилось 30 лет; онлайн-событие PHPverse собрало более 26 000 зрителей.
👉 Ссылка на оригинал
Библиотека пхпшника
#свежак
👍7🥱1