How to: снизить число ошибок на проекте и получить стабильный код благодаря статическому анализу PHPStan
В статье рассказано, как внедрить в процессы разработки статический анализ на основе PHPStan. Результат внедрения инструмента показан на примере проекта крупного производителя строительных материалов, который обратился с задачей по автоматизации и цифровизации оптовых онлайн-продаж.
🔗 Хабр
Библиотека пхпшника
#буст
В статье рассказано, как внедрить в процессы разработки статический анализ на основе PHPStan. Результат внедрения инструмента показан на примере проекта крупного производителя строительных материалов, который обратился с задачей по автоматизации и цифровизации оптовых онлайн-продаж.
🔗 Хабр
Библиотека пхпшника
#буст
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
📅 Сегодня в 19:00 МСК — бесплатный вебинар с Марией Жаровой.
Тема: «Введение в ML: как спрогнозировать стоимость недвижимости».
🔹 Разберём задачу прогноза стоимости недвижимости.
🔹 Покажем пошагово, как собрать первую модель.
🔹 Получите готовые скрипты для старта.
Не зайдёшь — будешь ещё год делать вид, что понимаешь графики в чужих презентациях.
👉 Регистрируйтесь
Тема: «Введение в ML: как спрогнозировать стоимость недвижимости».
🔹 Разберём задачу прогноза стоимости недвижимости.
🔹 Покажем пошагово, как собрать первую модель.
🔹 Получите готовые скрипты для старта.
Не зайдёшь — будешь ещё год делать вид, что понимаешь графики в чужих презентациях.
👉 Регистрируйтесь
С 2025 года Redis вернулся к open-source, выпустив Redis 8 под лицензией AGPLv3. После введения SSPL в 2024 году и резкой критики со стороны сообщества, Redis вернулся к истокам, но стоит ли этому радоваться?
Сторонники новой лицензии считают, что это правильный шаг, который восстановит доверие сообщества и вернёт Redis в ряды самых популярных инструментов для работы с БД в реальном времени. Однако критики утверждают, что этот ход больше связан с маркетингом и попыткой вернуть пользователей, чем с настоящими улучшениями.
— AGPLv3 обещает более открытое использование Redis в корпоративных и стартап-проектах.
— Но SSPL оставляет много вопросов о том, как Redis будет восприниматься в экосистеме open-source в будущем.
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Двойной Tap Shift·Shift открывает окошко Search Everywhere — через него можно запускать любые действия, искать файлы, классы, команды и даже настройки.
Введите Distraction → выберите Enter Distraction‑Free Mode, и IDE превратится в почти чистый редактор: никакого бокового меню, вкладок или панелей — только вы и ваш код.
Как результат: сосредоточенность по максимуму, меньше отвлечений и больше удовольствия от работы. Попробуйте!
Библиотека пхпшника
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱5👍4😁1
📊 Ленивые вычисления в PHP: эффективная работа с большими данными
Когда вам нужно обработать гигантские файлы, например, CSV размером 2 ГБ, загрузка данных в память может вызвать ошибку из-за исчерпания лимита памяти. Как этого избежать? Ответ — ленивые вычисления.
Ленивые вычисления позволяют обрабатывать данные по мере их необходимости, а не загружать всё в память сразу. В PHP для этого можно использовать генераторы и Iterator API.
Что такое ленивые вычисления?
Вместо того, чтобы хранить все данные в памяти, генераторы и Iterator API загружают данные по одному элементу за раз. Это позволяет работать с большими объёмами данных без излишней нагрузки на память.
Когда использовать?
Генераторы идеальны для простого стриминга данных, когда нужно поочередно обрабатывать элементы (например, строки в CSV файле).
Iterator API подходит для более сложных сценариев, когда необходимо сохранить состояние или использовать кастомные ключи.
Преимущества:
🔸 Меньше памяти: Генераторы могут обрабатывать миллионы строк, используя всего несколько килобайт памяти.
🔸 Производительность: Время выполнения остаётся практически неизменным, но память используется гораздо эффективнее.
Применение в реальной жизни
Например, при работе с автомобильными данными через API, использование генераторов позволило сократить потребление памяти с 2 ГБ до всего 10 МБ.
👉 Полная статья с примерами и бенчмарками
Библиотека пхпшника
Когда вам нужно обработать гигантские файлы, например, CSV размером 2 ГБ, загрузка данных в память может вызвать ошибку из-за исчерпания лимита памяти. Как этого избежать? Ответ — ленивые вычисления.
Ленивые вычисления позволяют обрабатывать данные по мере их необходимости, а не загружать всё в память сразу. В PHP для этого можно использовать генераторы и Iterator API.
Что такое ленивые вычисления?
Вместо того, чтобы хранить все данные в памяти, генераторы и Iterator API загружают данные по одному элементу за раз. Это позволяет работать с большими объёмами данных без излишней нагрузки на память.
Когда использовать?
Генераторы идеальны для простого стриминга данных, когда нужно поочередно обрабатывать элементы (например, строки в CSV файле).
Iterator API подходит для более сложных сценариев, когда необходимо сохранить состояние или использовать кастомные ключи.
Преимущества:
🔸 Меньше памяти: Генераторы могут обрабатывать миллионы строк, используя всего несколько килобайт памяти.
🔸 Производительность: Время выполнения остаётся практически неизменным, но память используется гораздо эффективнее.
Применение в реальной жизни
Например, при работе с автомобильными данными через API, использование генераторов позволило сократить потребление памяти с 2 ГБ до всего 10 МБ.
👉 Полная статья с примерами и бенчмарками
Библиотека пхпшника
👍8🥱3❤1
Какой из следующих терминов относится к обработке большого объема данных с использованием нескольких серверов?
Anonymous Quiz
37%
Сегментация
61%
Параллельные вычисления
2%
Хеширование
1%
Инкапсуляция
🌚3
💻 Подборка новостей по PHP за неделю:
🔹 Xdebug Update — июльский отчёт: 14 часов разработки при 23 профинансированных, часть времени ушла на отпуск. Подписчики GitHub/Pro получают апдейты раньше.
🔹 Inertia Form Component — новый
🔹 PHP 8.5.0 Beta 1 — первая бета новой версии. Релизный цикл продолжается, тестирование открыто для сообщества.
🔹 Symfony 11–17 августа 2025 — основное внимание уделено депрекации
Библиотека пхпшника
#свежак
🔹 Xdebug Update — июльский отчёт: 14 часов разработки при 23 профинансированных, часть времени ушла на отпуск. Подписчики GitHub/Pro получают апдейты раньше.
🔹 Inertia Form Component — новый
<Form/>
, работающий как классическая HTML-форма, но с использованием Inertia для предотвращения полной перезагрузки страниц.🔹 PHP 8.5.0 Beta 1 — первая бета новой версии. Релизный цикл продолжается, тестирование открыто для сообщества.
🔹 Symfony 11–17 августа 2025 — основное внимание уделено депрекации
sleep/wakeup
в PHP 8.5, вместо них теперь serialize/unserialize
. Анонсированы детали unconference-трека SymfonyCon Amsterdam 2025 и Symfony AI Hackathon (12 сентября 2025).Библиотека пхпшника
#свежак
Forwarded from Библиотека задач по PHP | тесты, код, задания
Какой метод в Symfony используется для получения параметров конфигурации в сервисах?
Anonymous Quiz
32%
getParameter()
10%
get()
47%
getConfig()
11%
parameters()
This media is not supported in your browser
VIEW IN TELEGRAM
7 октября стартует второй поток курса «AI-агенты для DS-специалистов».
За 5 недель вы научитесь собирать агентов, которые уже сейчас будут помогать бизнесу.
В кружке выше Максим Шаланкин, наш преподаватель, рассказывает подробнее — включай, чтобы не пропустить.
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Топ-вакансий по PHP за неделю
Senior/Lead PHP Developer — от 2500 до 4000 $, Удалёнка (Москва)
Fullstack Разработчик (PHP) — от 250 000 до 500 000 ₽, Удалёнка (Москва)
Backend Developer — до 3 500$, Удалёнка (Москва)
Backend Developer PHP+MySQL — от 295 000 до 380 000 ₽, Удалёнка (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Senior/Lead PHP Developer — от 2500 до 4000 $, Удалёнка (Москва)
Fullstack Разработчик (PHP) — от 250 000 до 500 000 ₽, Удалёнка (Москва)
Backend Developer — до 3 500$, Удалёнка (Москва)
Backend Developer PHP+MySQL — от 295 000 до 380 000 ₽, Удалёнка (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
🔥 How To: 6 частых ошибок безопасности в Laravel и как их исправить
Laravel — мощный и популярный фреймворк. Но вместе с популярностью он становится и мишенью для атак. Даже опытные разработчики иногда допускают ошибки, которые открывают лазейки для злоумышленников.
1️⃣ Завершаем все сессии после смены пароля
Ошибка: при смене пароля старые сессии на других устройствах остаются активными.
Исправление: используйте
👉 Почему важно: если токен украден, злоумышленник вылетит сразу после смены пароля.
2️⃣ Безопасная загрузка файлов
Ошибка: прямая ссылка на файлы (
Исправление: генерируйте временные подписанные ссылки (
👉 Почему важно: даже при утечке ссылка перестанет работать после срока действия.
3️⃣ Правильное связывание моделей в маршрутах
Ошибка: без scoping пользователь может подставить чужой ID.
Исправление: используйте
👉 Почему важно: предотвращает горизонтальную эскалацию прав.
4️⃣ Уникальные имена файлов
Ошибка: сохранение файлов под оригинальными именами ведёт к перезаписи.
Исправление: используйте UUID (
👉 Почему важно: два
5️⃣ Шифруем ID в URL
Ошибка: последовательные ID легко перебирать.
Исправление: шифруйте идентификаторы (
👉 Почему важно: атаки через инкремент ID становятся невозможны.
6️⃣ Шифрование чувствительных данных в БД
Ошибка: хранение API-ключей и персональных данных в открытом виде.
Исправление: используйте встроенные касты (
👉 Почему важно: даже при утечке базы данные останутся зашифрованы.
🔗 Читать статью
Библиотека пхпшника
Laravel — мощный и популярный фреймворк. Но вместе с популярностью он становится и мишенью для атак. Даже опытные разработчики иногда допускают ошибки, которые открывают лазейки для злоумышленников.
1️⃣ Завершаем все сессии после смены пароля
Ошибка: при смене пароля старые сессии на других устройствах остаются активными.
Исправление: используйте
logoutOtherDevices()
.👉 Почему важно: если токен украден, злоумышленник вылетит сразу после смены пароля.
2️⃣ Безопасная загрузка файлов
Ошибка: прямая ссылка на файлы (
/storage/invoices/invoice1.pdf
) позволяет угадывать URL.Исправление: генерируйте временные подписанные ссылки (
URL::temporarySignedRoute
).👉 Почему важно: даже при утечке ссылка перестанет работать после срока действия.
3️⃣ Правильное связывание моделей в маршрутах
Ошибка: без scoping пользователь может подставить чужой ID.
Исправление: используйте
->scopeBindings()
.👉 Почему важно: предотвращает горизонтальную эскалацию прав.
4️⃣ Уникальные имена файлов
Ошибка: сохранение файлов под оригинальными именами ведёт к перезаписи.
Исправление: используйте UUID (
Str::uuid()
).👉 Почему важно: два
profile.jpg
больше не сотрут друг друга.5️⃣ Шифруем ID в URL
Ошибка: последовательные ID легко перебирать.
Исправление: шифруйте идентификаторы (
Crypt::encryptString
).👉 Почему важно: атаки через инкремент ID становятся невозможны.
6️⃣ Шифрование чувствительных данных в БД
Ошибка: хранение API-ключей и персональных данных в открытом виде.
Исправление: используйте встроенные касты (
'api_key' => 'encrypted'
).👉 Почему важно: даже при утечке базы данные останутся зашифрованы.
🔗 Читать статью
Библиотека пхпшника
👍9