Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter – Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11K subscribers
1.51K photos
25 videos
26 files
4.24K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
🧠 PHP-лайфхак: подключи PHPStan или Psalm для статического анализа

Хочешь ловить баги до запуска кода? Используй статический анализ.
Это инструмент, который проверяет твой 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:
"noscripts": {
"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
👨‍💻 Остались ли IDE без ИИ

На реддите обсуждают интересный вопрос:
Есть ли ещё open-source IDE, где нет встроенного искусственного интеллекта?


Автор жалуется, что почти каждая современная среда разработки теперь старается «встроить помощника» — автодополнение на базе LLM, AI-чат в сайдбаре, умные подсказки, сбор кода для тренировки моделей и т.д.

Даже если функция выключена — она всё равно где-то рядом.

💬 Вы пользуетесь ИИ фишками в IDE? Или у вас припасён список пока ещё чистых инструментов? Делитесь в комментах 👇

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🙂 В Laravel при создании записей с помощью Factories вы можете использовать класс Sequence, чтобы заменить некоторые значения и применить к ним специальную логику.

Библиотека пхпшника

#vardump
🥱5👍3
🎃 Хэллоуин в Proglib Academy: скидки, призы и... немного паники

Сегодня 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 году? Или пришло время переходить на более современные решения?

Библиотека пхпшника
😁9
🙇‍♂️ Databases & SQL Roadmaps (2025)

Пошаговые гайды по изучению 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 — регулярное обновление текущей ветки с исправлениями и улучшениями.

Библиотека пхпшника

#свежак
3
💡 Совет по Laravel: Проверьте среду вашего приложения

Нам часто нужно проверять среду приложения. Хотя для этого можно использовать метод 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.

💬Обсудим в комментах: где вам приходилось резать агрегат и почему?

🔗 Хабр

Библиотека пхпшника
4
⚔️ Encryption vs Hashing в 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() создаёт значение, которое невозможно вернуть обратно.

Библиотека пхпшника
👍31
📊 Состояние 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 зрителей.

👉 Ссылка на оригинал

Библиотека пхпшника

#свежак
👍8🥱1
🛰️ How to: настроить Laravel Telescope для отладки и мониторинга

Хотите видеть, что происходит внутри вашего Laravel-приложения — какие запросы приходят, какие SQL выполняются, какие ошибки падают?
Laravel Telescope — это ваш бортовой мониторинг в одном дашборде.

🧭 Что можно смотреть
🔸 Requests — все HTTP-запросы
🔸 Queries — SQL и время выполнения
🔸 Exceptions — полные стектрейсы ошибок
🔸 Jobs, Cache, Mail, Logs — всё, что делает приложение за кадром

👉 Читать статью

Библиотека пхпшника
👍4
«Мой первый AI-агент на базе Neuron — PHP-агентного фреймворка»

Пока одни спорят, «жив ли PHP», в экосистеме происходит нечто любопытное — появился Neuron, первый enterprise-ready фреймворк для создания AI-агентов на PHP.

Автор статьи — опытный разработчик, который, как и многие, привык к Laravel, Yii и вечному вебу. И вдруг — нейросети, агенты, LLM. Казалось бы, вся движуха где-то между Python и JavaScript. А тут — Neuron, который обещает встроить «разумных» агентов прямо в привычный PHP-проект, без костылей и микросервисов на стороне.

🧠 Что делает Neuron


Neuron — это фреймворк для оркестрации AI-агентов.
Он позволяет:

🔸 подключать языковые модели (OpenAI, Claude и др.);

🔸 определять, какие функции (инструменты) агент может вызывать — от запросов в базу до API-вызовов;

🔸 собирать workflow из нескольких агентов, где каждый решает часть задачи;

🔸 использовать stream-режим для вывода прогресса в реальном времени;

🔸 внедрять человека в цикл («human-in-the-loop»), чтобы агент мог спрашивать совета.

И всё это — на чистом PHP, через Composer и знакомый стек.

⚙️ Примеры применения

🤖 Агент для аналитики — подключается к БД, генерирует отчёты.

👕 Агент-консультант по одежде — берёт данные о погоде и выдает рекомендации.

💬 Агент поддержки — читает обращения клиентов и подсказывает ответы.

📝 SEO-агент — сам скачивает статью, анализирует её и даёт советы по улучшению.

Каждый пример показывает идею: ИИ должен не просто отвечать, а действовать осознанно — как разработчик, у которого есть инструменты и план.

🚀 Почему это важно


До сих пор PHP-мир оставался «в стороне» от AI-революции.
Neuron может это изменить — дать возможность:

🔹 подключать LLM без внешних сервисов на Python;

🔹 строить цепочки агентов, которые работают внутри одного приложения;

🔹 наблюдать и отлаживать их поведение через Inspector.dev.

🔗 Хабр

Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
11
🧠 PHP-лайфхак: короткий синтаксис массивов и оператор объединения с null

В PHP часто встречается код вроде этого 👇
$array = [];
$value = isset($data['key']) ? $data['key'] : 'default';


Он работает, но выглядит громоздко. Современный PHP предлагает простой приём, которые делают код чище и короче.

⚡️ Null coalescing operator ??

Вместо проверки isset() можно просто написать:
$value = $data['key'] ?? 'default';


Если ключ 'key' не существует или равен null, вернётся 'default'.
Это особенно удобно при работе с конфигами, данными из API или форм.

Библиотека пхпшника
🥱12👍7😁4🌚2
💡 Symfony Validator: не только для форм

Большинство PHP-разработчиков используют Validator в Symfony исключительно для проверки сущностей, связанных с формами. Но этот компонент — гораздо мощнее, чем просто NotBlank и Email.

🔍 В статье автор показывает, как Validator помогает строить устойчивые API и гибкие правила валидации, не завязанные на базу данных.

🧩 1. DTO вместо Entity
Антипаттерн — принимать в контроллере Entity.
Лучше использовать DTO:
🔒 безопасно (нет mass assignment),
🧠 понятно (чёткий контракт API),
🧱 независимо (никакой связи с ORM).



#[Assert\NotBlank]
#[Assert\Email]
public readonly ?string $email;


⚙️ 2. Динамическая валидация с Group Sequences
Хочешь, чтобы обязательные поля менялись в зависимости от условий?
Используй GroupSequenceProvider:
например, если тип аккаунта corporate — проверяй companyName, если individual — игнорируй.

🧬 3. Проверка вложенных структур
С #[Valid] можно валидировать коллекции DTO:


#[Assert\Valid]
public array $items = [];


А с #[Collection] — ассоциативные массивы и JSON-payload’ы.

🧠 4. Свои Constraints с DI
Нужна валидация с доступом к базе или API?
Создай свой ConstraintValidator, инжектни EntityManager или сервис и пиши логику вроде:


if ($repository->findOneBy([$field => $value])) {
$this->context->buildViolation('Already in use')->addViolation();
}


Validator в Symfony — это не просто про формы.
Это способ держать бизнес-инварианты в чистом, расширяемом и декларативном виде.

🧠 Применяйте его для DTO, API, микросервисов и любых сложных структур.
Код станет чище, а валидация — надёжнее.

👉 Читать полностью

Библиотека пхпшника
🔥12
✏️ LeetCode-интервью: почему опытные разработчики их проваливают

Инженер с 10+ годами опыта провалил интервью, потому что не смог за 45 минут решить задачу на динамическое программирование, которую не видел с универа.

Есть аргументы за решение задач не собеседовании и против.

Никто не будет решать задачки с литкода на работе, но и код с O(n²) вместо O(n log n) сто процентов положит прод под нагрузкой.

Админ один раз перенервничал и забыл как найти середину отрезка на плоскости. Это полностью заруинило ему алгоритмическую секцию.

💬 Как вы думаете — задачи на собесе это ту мач или имеют место быть? Ждём ваше мнение в комментариях 👇

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
Очереди задач: простой способ пакетной обработки

Как работает очередь задач на примере создания миниатюр для видео.

Цель: после загрузки видео оно должно высветиться в виде миниатюры
👍1