Telegram Web
⌨️ Топ-вакансий по PHP за неделю

PHP-разработчик (Junior+/Middle-) — 175 000 ₽, офис (Москва)

Lead Backend Engineer (PHP) — от 420 000 ₽ до 550 000 ₽, удалёнка (Москва)

Junior+ PHP Developer — от 150 000 до 180 000 ₽, удалёнка (Москва)

PHP Stack Developer— от 200 000 ₽, удалёнка (Москва)

➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
🚀 Как ускорить массовую отправку HTTP-запросов в PHP

🔍 Постановка задачи:
Есть скрипт на PHP, который должен отправлять множество HTTP-запросов. Нужно сделать это как можно быстрее. Очевидное решение — параллельная отправка.

🔧 Шаг 1: последовательная обработка
Простой цикл с curl_init() и curl_exec() на каждый URL. Результат: 10 запросов выполняются за ~4.4 секунды.

⚙️ Шаг 2: повторное использование curl-хэндла
Инициализируем curl один раз и переиспользуем. Время выполнения снижается до ~1.7 секунды.

Шаг 3: параллельная отправка с curl_multi_
Используем curl_multi_init() и запускаем запросы одновременно. Итог: всего 0.5 секунды на 10 запросов. Почти в 9 раз быстрее, чем изначально.

📦 Шаг 4: отправка батчами (batching)
Если запросов сотни или тысячи, одновременно всё не потянет даже мощный сервер. Решение — отправка пакетами, например по 3. Это позволяет контролировать нагрузку. В нашем примере — ~0.8 секунды на 10 запросов.

🔗 Читать статью

Библиотека пхпшника #буст
👍11🔥82
📊 FastExcelWriter: Лёгкое и быстрое создание Excel-файлов на PHP

Если вы сталкивались с генерацией больших Excel-файлов на PHP, вы, вероятно, знакомы с PhpSpreadsheet. Хотя она функциональна, при работе с большими данными возможны проблемы с производительностью и потреблением памяти.

👨‍💻 FastExcelWriter — альтернатива PhpSpreadsheet с упором на скорость и экономию ресурсов. Вместо хранения данных в памяти, библиотека пишет строки напрямую в файл, снижая нагрузку на систему.

🔧 Преимущества FastExcelWriter:

🚀 Генерация файлов в 7–9 раз быстрее PhpSpreadsheet
💾 Минимальное потребление памяти благодаря построчной записи
🎨 Поддержка стилей, форматирования, изображений, диаграмм и примечаний
🧩 Простой и лаконичный API для разработчиков

👉 Хабр
👍97
🛠️ Команда дня: Быстрая проверка синтаксиса PHP-файла

php -l файл.php

-l (или --syntax-check) — от слова lint, проверка на синтаксические ошибки.

Зачем это нужно?

Когда вы работаете с PHP, особенно на больших проектах, важно быть уверенным, что в коде нет синтаксических ошибок. Перед коммитом, запуском CI или даже просто после правки пары строк — эта команда помогает убедиться, что всё в порядке.

Как это применять на практике:

В pre-commit хуке Git. Добавьте в .git/hooks/pre-commit:

find . -name «*.php» -exec php -l {} \;

Это не даст закоммитить файлы с синтаксическими ошибками.

В CI-пайплайне. Добавьте шаг «PHP lint check» перед выполнением тестов.

На лету. Если IDE не показывает ошибку, а сайт падает — это один из быстрых способов понять, где проблема.

🧠 Микросоветы:

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

🔸 Полезна в проектах без строгого статического анализа.

🔸 Используйте в сочетании с PHPStan или Psalm, но как быстрый первый барьер — незаменима.

Библиотека пхпшника #буст
👍8
💥 PHP 8.5 уже на подходе! Что нового?

Выход новой версии запланирован на ноябрь 2025, и уже сейчас в разработке — множество фич, нацеленных на удобство и безопасность разработчиков. Вот краткий обзор актуального статуса:

🔄 На голосовании

▪️ array_first() и array_last() — читаем первый и последний элемент массива без возни с указателями.
▪️ never для параметров — уточнение строгой типизации: функции не могут быть переданы аргументы, которые могут привести к возврату.

Приняты
▪️ Атрибуты на константах, включая #[Deprecated].
▪️ Поддержка графем в levenshtein() — теперь сравнение строк с учётом сложных Unicode-символов.

🚀 Уже реализованы
▪️ Ассиметричный доступ к статическим свойствам: можно читать публично, а писать только изнутри.

▪️ #[\NoDiscard] — предупреждение, если проигнорирован важный return.

▪️ get_error_handler() и get_exception_handler() — простой способ узнать текущие хендлеры.

▪️ Замыкания и callable в константных выражениях — мощный шаг к функциональному стилю.

▪️ Улучшенные backtrace’ы, cURL с шарингом DNS-кэша между сессиями, и обновлённый Directory как полноценный объект.

Ждём релиз в ноябре! 🔧🔥
👍29
Enums: Это просто круто или я слишком часто их использую?

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


🔹 Что скажете?

Как вы используете enums в своем коде? Помогают ли они вам сделать код чище и понятнее, или
это просто модная фишка, которой не стоит увлекаться?

💬 Делитесь в комментариях:
— Как вы используете enums в своих проектах?
— Есть ли случаи, когда их использование не оправдано?
— Как enums помогают вам с поддержкой и читаемостью кода?

Библиотека пхпшника #междусобойчик
1
📤 Как устроены HTTP-заголовки: простая схема для чайников и не только

На картинке выше — вся суть общения между браузером и сервером через HTTP. Что передаётся, зачем и откуда берётся — смотрим по пунктам👇

➡️ HTTP Request Header — это то, что отправляет браузер

• Accept: что ожидаем получить (например, изображение webp)
• Accept-Encoding: в каком виде (например, gzip)
• Cookie: ваши печеньки, которые шлём серверу
• Cache-Control: можно ли закэшировать и на сколько
• Referer: с какой страницы пришёл запрос
• User-Agent: кто именно лезет на сервер (браузер и ОС)

⬇️HTTP Response Header — это то, что вернёт сервер

• Content-Type: что именно он отдал (например, image/webp)
• Set-Cookie: отправка новой печеньки в ответ
• Server: какой сервер обслужил вас (gws, например, Google Web Server)
• Access-Control-Allow-Origin: можно ли делиться ответом с другими доменами
• Date: дата и время ответа
• Cache-Control: как долго можно хранить ответ в кэше

Понимание HTTP-заголовков критично для разработки API, настройки кэша, защиты данных и дебага багов в сети. Без них — ни туда, ни сюда.

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤩1
CRUD на PHP с использованием файберов и пула соединений с PostgreSQL

В новой статье на Хабре автор делится опытом создания прототипа CRUD-приложения, использующего файберы и пул соединений с PostgreSQL. Результаты впечатляют: один процесс PHP CLI обрабатывает 10 параллельных запросов за 2 секунды, благодаря асинхронной обработке и неблокирующему вводу-выводу.

🔍 Ключевые моменты:

Файберы позволяют обрабатывать несколько запросов в одном процессе, улучшая производительность.

Неблокирующий драйвер PostgreSQL обеспечивает асинхронное взаимодействие с базой данных.

Сравнение с сервером на базе PHP-FPM показало значительное преимущество в
производительности при использовании файлов.

💡 Для кого это будет полезно:
🔸 Разработчикам, стремящимся повысить производительность своих приложений.

🔸 Тем, кто интересуется асинхронным программированием в PHP.

🔸 Специалистам, работающим с PostgreSQL и желающим оптимизировать взаимодействие с базой данных.

🔗 Хабр
👍93👏1🤩1
Composer vs. «сам всё подключу»

Когда-то мы писали require_once 'helpers.php'; и не парились.
Теперь — composer require, autoload, 100500 зависимостей и 20 секунд на запуск composer install.

🔧 Composer — это порядок, автозагрузка, контроль версий, удобство.
Но стоит добавить одну библиотеку — и за тобой тянется вся экосистема.
guzzlehttp/guzzle? Привет, залежи зависимостей.

А ещё — конфликты версий, сломанные деплои и вечное: «у меня работает, у тебя — нет».

🤓 А если без Composer?
– Полный контроль: сам подключил, сам знаешь, где что лежит.
– Быстрее, проще, без магии.
– Но вот только кто будет следить за обновлениями и зависимостями вручную?

💥 Стоит ли тащить библиотеку ради одной функции?
Или лучше скопировать нужный метод и жить спокойно?

💬 Делитесь болью и лайфхаками:
Вы в команде «только Composer» или «никаких зависимостей — только хардкор»?
🔥51👍1
PHP Datatypes: Строгий и безопасный способ работы с примитивными типами данных

Эта библиотека представляет гибкий, но строгий способ работы с примитивными типами данных, такими как целые числа, плавающие и строки, в PHP. Она делает акцент на безопасности типов и точности, поддерживая операции для подписанных и беззнаковых целых чисел (Int8, UInt8 и т.д.) и различных форматов с плавающей точкой (Float32, Float64 и т.д.).

Для чего это нужно:

🟢Безопасность типов: Явно определяя типы данных, например UInt8, вы устраняете риск проникновения недопустимых значений в ваше приложение. Например, использование целых чисел без знака гарантирует, что значение останется в допустимых диапазонах, обеспечивая защиту от неожиданного ввода данных.

🟢Точность: Работа с точными значениями, особенно с числами с плавающей точкой, может быть сложной в PHP из-за того, как он управляет плавающими числами нативно.

🟢Защита диапазонов: Указывая точные диапазоны, вы можете предотвратить такие проблемы, как переполнение или недополнение, которые часто остаются незамеченными в языках с динамической типизацией.

🟢Удобство чтения и обслуживания: Явные типы данных улучшают читаемость кода. Когда разработчик читает ваш код, он сразу же понимает, какой тип значения ожидается и какие ограничения на него накладываются. Это повышает удобство сопровождения в долгосрочной перспективе.

🔗 Github

Библиотека пхпшника #инструменты
👍3🔥1
Что будет выведено в результате работы скрипта?
🌚5
Что будет выведено в результате работы скрипта?
Anonymous Quiz
68%
int(8) int(5)
5%
int(8) int(5) int(7) int(4)
23%
int(8) int(7) int(5) int(4)
3%
int(7) int(4)
🌚9👍1
🏗 7 архитектурных паттернов, которые должен знать каждый программист

Если вы всерьёз строите карьеру в разработке, то без архитектурных паттернов никуда. Они помогают проектировать системы, которые не развалятся при первом же проде — масштабируемые, отказоустойчивые и вменяемые в поддержке.

➡️ В статье вас ждёт

— Circuit Breaker — как не сжечь систему повторными ошибками
— Event Sourcing — зачем сохранять историю изменений вместо текущего состояния
— SideCar — как отделить логику от инфраструктуры
— CQRS — почему чтение и запись лучше разводить по разным моделям
— Rate Limiting — как защититься от перегрузки
— Strangler Fig — пошаговая миграция без боли
— Health Endpoint Monitoring — как делать доступный мониторинг состояния системы

Это не базовые темы, но если вы хотите прокачаться и разбираться в архитектуре — самое время углубиться.

🔵 Для полного понимания Архитектуры, забирайте наш курс → «Архитектуры и шаблоны проектирования»

📎 Статья

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱71
⌨️ Топ-вакансий по PHP за неделю

Senior PHP Developer (Bitrix) — от 3 500 до 4 500 €, Офис (Кипр)

TechLead PHP — 400 000 ₽, удалёнка (Москва)

Senior PHP Developer — от 250 000 до 400 000 ₽, удалёнка (Москва)

➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
😢4👍1
📢 Работа с IP

Иногда вам может понадобиться работать с IP-адресами. Laravel использует компонент HttpFoundation из Symfony, который поставляется с полезными помощниками для работы с IP-адресами 🚀

Библиотека пхпшника #буст
👍41
🔧 Как без боли обновить PHP-проект на Symfony

Обновление PHP-проекта часто воспринимается как рискованная операция: что-то ломается, срочные фиксы летят в прод, команда в стрессе. Однако при правильном подходе процесс становится предсказуемым и управляемым.

🧰 1. Подготовка инструментов
Перед обновлением важно собрать «ящик инструментов»: автоматические тесты, статический анализ, линтеры. Например, инструмент Bruno отлично подходит для API-тестирования — лёгкий, удобный для работы в команде и хорошо интегрируется с Git.

📋 Что нужно сделать:
Выполнить debug:router для получения списка маршрутов.
Определить критичные эндпоинты и написать для них тест-сценарии.
Интегрировать тесты в CI для автоматического контроля стабильности.

⬆️ 2. Обновление зависимостей и окружения
Обновить composer.json и конфигурации окружения (например, Docker) под новую версию PHP, например 8.3.
Проверить список устаревших пакетов через composer outdated.
Выполнять обновление поэтапно — по одному или нескольким пакетам за раз.
Запустить PHPStan для статического анализа и PHP CS Fixer для форматирования кода.
Проверить и устранить устаревшие конструкции, отображаемые в Symfony Profiler или тестах.

🔄 3. Рефакторинг с использованием Rector
Rector позволяет автоматически модернизировать код: обновить синтаксис под новую версию PHP, улучшить читаемость, удалить мёртвый код. Настраивается через конфигурационные файлы с наборами правил (например, PHP 8.3, codeQuality, deadCode). Рефакторинг проводится поэтапно с обязательным прогоном тестов после каждого шага.

🛠️ 4. Обновление CI/CD
Актуализировать образы и зависимости в CI-пайплайне.
Убедиться, что все стадии (тесты, линтеры, анализ) выполняются успешно.
Задеплоить на стейджинг и проверить стабильность работы.

🧪 Пример GitHub Actions с Bruno:

- name: Run Bruno API tests
run: |
npm install -g @usebruno/cli
php -S localhost:8000 -t public &
sleep 2
cd bruno && bru run --env dev

🖼️ 5. Тестирование фронтенда
Даже если проект в основном бэкендовый, визуальные баги и ошибки пользовательского сценария могут остаться незамеченными. Тесты с помощью Cypress или Puppeteer позволяют отследить визуальные и поведенческие ошибки в интерфейсе.

🔗 Medium
👍3🌚2🤔1
Создание пользовательских классов в Laravel без пользовательских команд

🔧 Проблема


Laravel предоставляет команды Artisan для генерации стандартных компонентов (модели, контроллеры и т.д.), но не поддерживает создание пользовательских классов. Обычно разработчики создают отдельные команды, например, make:service или make:repository, что требует времени на настройку и поддержку.

💡 Решение: пакет laravel-custom-make
Пакет usmanzahid/laravel-custom-make позволяет:
🔸 Определять пользовательские типы классов в одном конфигурационном файле.

🔸 Указывать путь для сохранения и шаблон (stub) для каждого типа.

🔸 Генерировать классы с помощью команды php artisan make:custom

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

Библиотека пхпшника #буст
🌚1
📎 Промпт дня: нейминг переменных

Один из ключевых факторов читаемости и поддержки кода — это качественные имена переменных.

Мы подготовили для вас промпт, который поможет находить удачные и понятные названия переменных в PHP-проектах, чтобы потом не приходилось гадать, что значит $xyz123

Промпт:
You are a senior PHP developer, known for writing clean, maintainable, and idiomatic PHP code. Your main task is to suggest excellent variable names for various use cases. You follow PSR standards and prioritize clarity, purpose, and context in naming.


💬 Делитесь в комментариях интересными примерами переменных из вашего кода. Может, у кого-то завалялись пасхалки вроде
$theChosenOne 👇

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/07/08 23:37:56
Back to Top
HTML Embed Code: