TG Telegram Group Link
Channel: Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Back to Bottom
💥 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
🚨 Смешные новости про IT теперь в одном канале

Мы запустили @hahacker_news — наш новый юмористический IT-канал.

Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.

👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
1🔥1😁1
🐾 Проклятие или благословение

Вопрос древний, как интернет: помогает ли кошка работать? Или это пушистая диверсия в лапах?

За что кошку можно любить на рабочем месте:

Погладил кота — забыл о дедлайнах. Правда, вместе с дедлайнами можно забыть и о задачах. Но нервы целы.

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

Кошка никогда не делает ничего лишнего. Хотите продуктивности? Учитесь у мастеров минимализма.

💬 А есть ли минусы у кошек? Делитесь своими мыслями в комментариях👇 Заодно можете покидать своих пушистых помощников 🐈

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔21
😀 Самые полезные хоткеи в VS Code

💡 Хочешь редактировать код быстрее и чувствовать себя как джедай IDE? Лови подборку горячих клавиш, которые действительно ускоряют работу и делают процесс редактирования в разы приятнее:

🔥 Редактирование


🔹 Alt + ↑ / ↓ — переместить строку вверх или вниз.

🔹 Shift + Alt + ↑ / ↓ — скопировать строку вверх или вниз.

🔹 Ctrl + / — закомментировать или раскомментировать строку.

💬 А какие хоткеи у вас самые любимые? Может, есть свои "скрытые фишки" работы в VS Code? Делитесь в комментариях👇

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
🚀 Работаем с NATS в PHP: просто, быстро и неожиданно

Что такое NATS?
NATS — это высокопроизводительный брокер сообщений, написанный на Go. Он поддерживает модели PUB/SUB и очереди через JetStream. Работает по простому текстовому протоколу, с которым можно взаимодействовать даже через telnet.

PHP и NATS: возможно ли?
Да! Существует библиотека basis-company/nats, которая позволяет PHP-приложениям подключаться к NATS, публиковать и получать сообщения. В статье подробно описано:
🔸 Как установить и настроить библиотеку.
🔸 Как создать поток с политикой WORK_QUEUE.
🔸 Как публиковать и обрабатывать сообщения.

Почему это важно?
Интеграция PHP с современными брокерами сообщений открывает новые возможности для масштабируемых и распределённых систем. Теперь PHP-разработчики могут использовать преимущества асинхронной обработки данных без перехода на другие языки.

📖 Читайте статью полностью на Хабре
🥱8👍2
HTML Embed Code:
2025/07/08 22:30:25
Back to Top