Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Все самое полезное для пхпшника в одном канале. По рекламе: @proglib_adv Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Больше📈 Аналитический обзор Telegram-канала Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Канал Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 521 подписчиков, занимая 11 322 место в категории Технологии и приложения и 60 492 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 521 подписчиков.
Согласно последним данным от 27 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -65, а за последние 24 часа — -3, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 19.19%. В первые 24 часа после публикации контент обычно набирает 9.59% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 2 019 просмотров. В течение первых суток публикация набирает 1 009 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 15.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как php, laravel, пхпшника, artisan, api.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Все самое полезное для пхпшника в одном канале.
По рекламе: @proglib_adv
Учиться у нас: clc.to/M561SQ
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”
Благодаря высокой частоте обновлений (последние данные получены 28 августа, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
static в замыкании? Да — и вот почему
На первый взгляд, совет заменить обычную анонимную функцию на static в array_map может показаться чисто стилевым. Но за этой рекомендацией скрывается реальный прирост производительности. ⚡
📌 Что происходит:
– static-замыкания не привязаны к $this, а значит, не тащат за собой контекст объекта
– Это позволяет PHP быстрее освобождать память
– И в ряде случаев — существенно ускоряет выполнение кода
💡 Один из PR'ов в Ocramius/GeneratedHydrator показал: просто добавив static, удалось добиться ~15% ускорения. А бенчмарки дали ещё более радикальную разницу:
benchUsingStaticKeyword → 2.10MB / 3.70ms
benchNotUsingStaticKeyword → 71.30MB / 17.17ms
📉 Минус 30x по памяти, минус 4x по времени.
Чтобы внедрить это на постоянной основе, удобно использовать Rector с правилами StaticClosureRector и StaticArrowFunctionRector. Так все замыкания, где не используется $this, становятся static автоматически. 🛠️
✅ Быстрее
✅ Меньше памяти
✅ Автоматическая проверка в CI
👉 Читать статью
#лучшее2025curl_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 запросов.
🔗 Читать статью
Библиотека пхпшника
#лучшее2025float|int → int
BaseClass → ChildClass
Exportable → Exportable&Cacheable
Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.
❌ Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например, int → float|int — вызовет ошибку.
✅ Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:
array → array|Collection
Traversable&Collection → Collection
EloquentCollection → Collection
Такой подход делает методы более гибкими при переопределении.
❌ Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.
🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.
👉 Читать статью
#лучшее2025isset() vs empty() vs is_null() — функции для проверки переменных в PHP. Когда какую применять? 🤔
✅ isset($var) — Проверяет, существует ли переменная и не равна ли она null.
🔹 isset($var) → false, если $var = null; или переменная не объявлена.
🔹 isset($var) → true, если $var = «», 0, false, [], но НЕ null.
✅ empty($var) — Проверяет, считается ли переменная «пустой» (falsey значением).
🔹 empty($var) → true, если $var = «», 0, false, null, [], «0».
🔹 empty($var) → false, если $var = «abc», 123, [1,2,3].
✅ is_null($var) — Проверяет, является ли переменная строго null.
🔹 is_null($var) → true, только если $var = null.
🔹 is_null($var) → false, если $var существует и имеет любое другое значение (даже «», 0, false).
📌 Когда что использовать?
🔹 isset($var) → Проверяем, существует ли переменная.
🔹 empty($var) → Проверяем, «пустая» ли она (falsey).
🔹 is_null($var) → Проверяем, является ли null.
✍️ А какую функцию вы чаще используете в своих проектах?
Библиотека пхпшника
#лучшее2025curl -o /usr/local/bin/pvm https://raw.githubusercontent.com/smoqadam/pvm/main/pvm
chmod +x /usr/local/bin/pvm
export PATH="$HOME/.pvm/current:$PATH»
🔗Github
#лучшее2025composer install и composer update. Однако у Composer есть менее известные, но очень полезные команды, которые могут значительно упростить вашу работу над проектом.
1. composer outdated
Эта команда показывает, какие зависимости вашего проекта устарели. Она выводит список всех пакетов, для которых доступны более новые версии, указывая текущую и последнюю версии. Это удобный способ следить за обновлениями и безопасностью проекта без необходимости сразу обновлять все пакеты.
2. composer show
С помощью этой команды можно получить подробную информацию обо всех установленных пакетах. Кроме того, если указать конкретное имя пакета, можно узнать его описание, текущую версию и зависимости. Например:
composer show backpack/crudЭта команда полезна, когда нужно быстро проверить, какая версия пакета установлена и для чего он нужен. 3.
composer why
Если вы хотите понять, почему определённый пакет установлен в проекте, используйте команду composer why. Она покажет, какие зависимости требуют установки данного пакета. Это особенно полезно для анализа сложной цепочки зависимостей.
4. composer licenses
Для проверки лицензий всех установленных зависимостей существует команда composer licenses. Она помогает убедиться, что все используемые пакеты соответствуют необходимым требованиям по лицензированию, что особенно важно при работе с открытым исходным кодом.
5. composer check-platform-reqs
При работе на разных платформах может возникнуть необходимость убедиться, что все необходимые расширения PHP установлены. Команда composer check-platform-reqs проверяет, соответствует ли ваша система требованиям, указанным в composer.json. Она также проверяет версию PHP и расширения.
#лучшее2025$result = trim(str_shuffle(strtoupper("Hello World")));
Или ещё хуже — с кучей временных переменных:
$result = "Hello World";
$result = strtoupper($result);
$result = str_shuffle($result);
$result = trim($result);
Теперь:
$result = strtoupper("Hello World")
|> str_shuffle(...)
|> trim(...);
Каждая операция читается как шаг рецепта — слева направо. Код становится декларативным, не запутанным и без временных переменных.
🎯 Реальный пример: обработка email'а из формы
$result = $_REQUEST['email']
|> fn($e) => strtolower($e)
|> fn($e) => filter_var($e, FILTER_VALIDATE_EMAIL)
|> fn($e) => sendEmail($e, "Welcome!");
echo $result ? "Sent!" : "Error";
🔥 Минимум шума, максимум сути.
Pipe — мелкая синтаксическая штука, но она делает код ближе к тому, как вы мыслите.
С PHP 8.5 пишем как люди.
🐸Библиотека пхпшника
#лучшее2025getSomething() и setSomething().
Код становится компактнее, выразительнее и проще для сопровождения.
🤔 В чём была проблема раньше
До этого у разработчиков было всего два варианта:
🧱 классический подход с приватными полями и методами доступа;
⚙️ promoted-properties из конструктора — удобно, но без логики.
Минус был общий:
❌ негде аккуратно разместить валидацию;
❌ сложно добавить логирование изменений;
❌ неудобно реализовать ленивые вычисления;
❌ класс быстро разрастался вспомогательными методами.
✨ Что изменилось с хуками
Теперь PHP позволяет перехватывать:
👀 момент чтения свойства;
✍️ момент записи значения.
При этом:
📌 снаружи используется привычный доступ к свойству;
🧠 внутри — чётко определённое место для логики;
🧩 в одном классе можно сочетать обычные свойства и свойства с хуками.
🧮 Виртуальные свойства
PHP 8.4 позволяет создавать свойства без собственного хранилища.
Такие свойства:
🪄 не занимают память;
🔄 вычисляются при каждом обращении;
🧩 выступают как интерфейс к другим данным объекта.
Полезно для:
объединённых представлений данных;
вычисляемых значений;
упрощения публичного API модели.
🧬 Наследование и контроль поведения
Хуки полностью поддерживают наследование:
🔁 поведение можно расширять или переопределять;
🔒 отдельные хуки можно пометить как final;
🧱 контроль инвариантов остаётся на стороне базового класса.
По возможностям это сопоставимо с методами, но на уровне свойств.
⚠️ Важные ограничения
Есть особенности, которые важно учитывать:
🚫 хуки несовместимы с readonly-свойствами;
🔗 изменение по ссылке может обойти логику записи;
🧪 не все внутренние функции PHP вызывают хуки одинаково.
Это не ошибки, а архитектурные компромиссы.
🔗 Хабр
Библиотека пхпшникаphpstan-baseline.neon на отдельные файлы в директории baselines/, где каждый файл соответствует конкретному идентификатору ошибки.
🔸Поддержка форматов: Поддерживаются как форматы neon, так и php для базовых файлов.
🔗 GitHub
#инструменты