👍19🥰3
Forwarded from Книги для программистов
В книге автор собрал все ключевые идеи реляционных СУБД — от понятия данных до логики работы транзакций. Тебя ждет фундаментальная теория и наглядная практика проектирования БД:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
💻 Подборка новостей по PHP за неделю:
🔹 PHP 8.5.0 RC2 — второй релиз-кандидат доступен для тестирования. Выход финальной версии всё ближе: разработчиков призывают проверять совместимость и сообщать о багах.
🔹 Closures в константных выражениях (PHP 8.5) — теперь можно использовать замыкания прямо в константах и как значения по умолчанию (например, в атрибутах). Это существенно расширяет выразительность языка.
🔹 Новый URI-экстеншен в PHP 8.5 — в стандартную библиотеку добавлен полноценный парсер URI, соответствующий RFC 3986 и WHATWG URL. Больше не нужно сторонних пакетов для корректного парсинга URL.
🔹 Laravel 12.34 — появился failover queue driver для отказоустойчивости очередей, улучшен полнотекстовый поиск в Scout и добавлена возможность откладывать выполнение HTTP batch-запросов.
🔹 Symfony 13–19 октября — продолжается полировка релизов 7.4 и 8.0, запущен сайт к 20-летию Symfony и опубликована первая статья серии New in Symfony 7.4.
Библиотека пхпшника
#свежак
🔹 PHP 8.5.0 RC2 — второй релиз-кандидат доступен для тестирования. Выход финальной версии всё ближе: разработчиков призывают проверять совместимость и сообщать о багах.
🔹 Closures в константных выражениях (PHP 8.5) — теперь можно использовать замыкания прямо в константах и как значения по умолчанию (например, в атрибутах). Это существенно расширяет выразительность языка.
🔹 Новый URI-экстеншен в PHP 8.5 — в стандартную библиотеку добавлен полноценный парсер URI, соответствующий RFC 3986 и WHATWG URL. Больше не нужно сторонних пакетов для корректного парсинга URL.
🔹 Laravel 12.34 — появился failover queue driver для отказоустойчивости очередей, улучшен полнотекстовый поиск в Scout и добавлена возможность откладывать выполнение HTTP batch-запросов.
🔹 Symfony 13–19 октября — продолжается полировка релизов 7.4 и 8.0, запущен сайт к 20-летию Symfony и опубликована первая статья серии New in Symfony 7.4.
Библиотека пхпшника
#свежак
😍3❤1👏1
💡 Совет по Laravel: Результат команды
Знаете ли вы, что Laravel позволяет определять колбеки, которые будут выполняться в зависимости от результата запланированной задачи? Это помогает регистрировать сбои или выполнять связанные действия в случае успеха 🚀
Библиотека пхпшника
#vardump
Знаете ли вы, что Laravel позволяет определять колбеки, которые будут выполняться в зависимости от результата запланированной задачи? Это помогает регистрировать сбои или выполнять связанные действия в случае успеха 🚀
Библиотека пхпшника
#vardump
🧠 Готовишься к собесам, а ноутбук еле тянет IDE?
Самое время прокачать скиллы и апгрейднуть железо!
Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!
📚 Среди курсов:
▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.
▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.
▫️ Python, математика для DS, основы IT и другие направления.
👉 Принять участие
Самое время прокачать скиллы и апгрейднуть железо!
Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!
📚 Среди курсов:
▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.
▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.
▫️ Python, математика для DS, основы IT и другие направления.
👉 Принять участие
😁4👾1
🧩 Enums в Laravel: конец магическим строкам
Если вы когда-либо писали
С выходом Laravel 12 они перестали быть просто “новинкой языка” — это теперь must-have инструмент для чистого, безопасного и предсказуемого кода.
💡 Зачем они нужны
Enums заменяют беспорядок из строк, флагов и констант.
— гарантируют типобезопасность: вы даёте переменной не просто строку, а определённое значение из “набора”.
— код становится само-документируемым: “это состояние” видно из названия enum-класса, а не приходится гуглить что означают разные статусы.
— легче поддержка: менее вероятно, что в коде появится “typo” или неизвестное состояние.
— интеграция с Laravel становится проще: например, enum-кастинг колонок модели, валидация enum-значения — меньше “шаблонного” кода.
🛠 Как мыслить без кода
Представьте: у вас есть список чётких, фиксированных значений — например, “ожидает”, “в работе”, “завершено”, “отменено”.
Раньше: множество строк, массивов, проверки типа
С Enums: “статус задачи” — это не просто строка, это экземпляр типа, который не может быть чем-то другим.
База данных остаётся привычной, интерфейсы — знакомыми, но логика приложения читается лучше.
📊 Что принесёт использование Enums
— меньше ошибок на проде (например: “неверное состояние”),
— лучше автодополнение и подсказки в IDE,
— меньше “магических строк” в коде,
— единое место для описания значений и поведения (если enum-тип расширить методами типа “label” или “сортировка”).
Разработчики отмечают, что применение Enums делает код более выразительным и легче рефакторить.
В контексте Laravel 12 это уже не эксперимент — это один из рекомендуемых подходов.
🎯 Когда начинать?
Если вы ещё не используете Enums, то:
— при новом проекте на Laravel 12/13 — смело включайте их “с самого начала”.
— при рефакторинге старого проекта — начните с ключевых участков: статусы, роли, состояние процесса.
— если используете строковые флаги или массивы “констант” — обратите внимание: Enums может стать шагом к более стабильной архитектуре.
📣 Общее настроение
Enums — это не просто синтаксический сахар. Это шаг к более выразительному, поддерживаемому и устойчивому коду.
Если вы программист-artisan, стремящийся не просто “сделать” приложение, а выстроить его красиво и последовательно — Enums это инструмент, который стоит в арсенале.
🔗 Medium
Библиотека пхпшника
Если вы когда-либо писали
status = 'pending' и потом искали, где же опечатались или где вдруг “Pending” и “pending” трактуются по-разному — добро пожаловать в мир нативных Enums в PHP 8.1.С выходом Laravel 12 они перестали быть просто “новинкой языка” — это теперь must-have инструмент для чистого, безопасного и предсказуемого кода.
💡 Зачем они нужны
Enums заменяют беспорядок из строк, флагов и констант.
— гарантируют типобезопасность: вы даёте переменной не просто строку, а определённое значение из “набора”.
— код становится само-документируемым: “это состояние” видно из названия enum-класса, а не приходится гуглить что означают разные статусы.
— легче поддержка: менее вероятно, что в коде появится “typo” или неизвестное состояние.
— интеграция с Laravel становится проще: например, enum-кастинг колонок модели, валидация enum-значения — меньше “шаблонного” кода.
🛠 Как мыслить без кода
Представьте: у вас есть список чётких, фиксированных значений — например, “ожидает”, “в работе”, “завершено”, “отменено”.
Раньше: множество строк, массивов, проверки типа
if status == 'completed'.С Enums: “статус задачи” — это не просто строка, это экземпляр типа, который не может быть чем-то другим.
База данных остаётся привычной, интерфейсы — знакомыми, но логика приложения читается лучше.
📊 Что принесёт использование Enums
— меньше ошибок на проде (например: “неверное состояние”),
— лучше автодополнение и подсказки в IDE,
— меньше “магических строк” в коде,
— единое место для описания значений и поведения (если enum-тип расширить методами типа “label” или “сортировка”).
Разработчики отмечают, что применение Enums делает код более выразительным и легче рефакторить.
В контексте Laravel 12 это уже не эксперимент — это один из рекомендуемых подходов.
🎯 Когда начинать?
Если вы ещё не используете Enums, то:
— при новом проекте на Laravel 12/13 — смело включайте их “с самого начала”.
— при рефакторинге старого проекта — начните с ключевых участков: статусы, роли, состояние процесса.
— если используете строковые флаги или массивы “констант” — обратите внимание: Enums может стать шагом к более стабильной архитектуре.
📣 Общее настроение
Enums — это не просто синтаксический сахар. Это шаг к более выразительному, поддерживаемому и устойчивому коду.
Если вы программист-artisan, стремящийся не просто “сделать” приложение, а выстроить его красиво и последовательно — Enums это инструмент, который стоит в арсенале.
🔗 Medium
Библиотека пхпшника
👍3❤1
Forwarded from Библиотека задач по PHP | тесты, код, задания
Архитектура — Dependency Injection & SOLID
Какой принцип SOLID здесь соблюдён?
Какой принцип SOLID здесь соблюдён?
Forwarded from Библиотека задач по PHP | тесты, код, задания
Какой принцип SOLID здесь соблюдён?
Anonymous Quiz
15%
Single Responsibility
9%
Open/Closed
54%
Dependency Inversion
21%
Interface Segregation
😁8🥱1
🧩 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
Библиотека пхпшника
#инструменты
👍5🔥2
🚀 How to: Создать Telegram-бота и отправить сообщения с помощью Laravel 12
В этой статье рассматривается процесс создания Telegram-бота и его интеграции с Laravel 12. Пройдите пошаговую инструкцию по получению API токена, настройке пакета
👉 Ссылка на статью
Библиотека пхпшника
В этой статье рассматривается процесс создания Telegram-бота и его интеграции с Laravel 12. Пройдите пошаговую инструкцию по получению API токена, настройке пакета
irazasyed/telegram-bot-sdk и отправке сообщений через вашего бота. Этот гайд подойдет как для новичков, так и для опытных разработчиков, желающих добавить функциональность Telegram в свои приложения и улучшить взаимодействие с пользователями.👉 Ссылка на статью
Библиотека пхпшника
👍1😁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" и постепенно повышай. Так ты постепенно приведёшь код в порядок без боли.
Библиотека пхпшника
🥱1
⌨️ Топ-вакансий по 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👍2
🎃 Хэллоуин в 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 году? Или пришло время переходить на более современные решения?
Библиотека пхпшника
😁7