ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Открыть в Telegram

Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

Больше

📈 Аналитический обзор Telegram-канала Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Канал Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 461 подписчиков, занимая 11 698 место в категории Технологии и приложения и 60 802 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 461 подписчиков.

Согласно последним данным от 26 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -35, а за последние 24 часа — -5, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 16.11%. В первые 24 часа после публикации контент обычно набирает 7.39% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 685 просмотров. В течение первых суток публикация набирает 773 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 2.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как php, laravel, пхпшника, artisan, api.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
“Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”

Благодаря высокой частоте обновлений (последние данные получены 27 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

10 461
Подписчики
-524 часа
-237 дней
-3530 дней
Архив постов
⚠️ Уже завтра стартует курс AgentOps! Мы собрали на потоке сборную из мастеров IT-рынка. Практики из BigTech научат вас контр
⚠️ Уже завтра стартует курс AgentOps! Мы собрали на потоке сборную из мастеров IT-рынка. Практики из BigTech научат вас контролировать и отлаживать ИИ-агентов, чтобы они работали предсказуемо и не сливали бюджет на API. 🔥 Заберите 3 курса по цене 1:
● При покупке VIP-тарифа (осталось 4 места) нового потока «Разработка ИИ-агентов» получаете в подарок курс «AgentOps» + ещё один любой курс Академии (например, «Математика для разработки AI», чтобы глубже освоить направление). ● Три курса обойдутся вам всего в 134.000 ₽ вместо 263.000 ₽. ● Доступна удобная беспроцентная рассрочка, платеж можно разбить на несколько комфортных частей.
Хотите прокачать свое портфолио продакшн-кейсом, но пока сомневаетесь? Пройдите наш бесплатный демо-урок, чтобы протестировать формат перед покупкой. 👉 Забрать 3 курса по цене 1 и получить демо-урок

⌨️ Топ-вакансий по PHP за неделю PHP-разработчик — удалёнка/гибрид (Москва) — Гринсайт PHP-разработчик (Laravel) — офис (Калининград) — ЖилиБыли Tech Lead (PHP / Laravel) — 3 500 - 4 700 $ — удалёнка — Global Trads ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

🚀 Не уверены, стоит ли переходить на зрелую ИИ-инженерию? Начните с демо-урока! Вот-вот стартует наш курс AgentOps. Если вы
🚀 Не уверены, стоит ли переходить на зрелую ИИ-инженерию? Начните с демо-урока! Вот-вот стартует наш курс AgentOps. Если вы сомневаетесь в формате, просто оставьте заявку и получите бесплатный демо-урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов». Для тех, кто готов мощно прокачать портфолио, прямо сейчас действует предложение «3 любых курса по цене 1»:
— При покупке VIP-тарифа (осталось 4 места) нового потока «ИИ-агенты» вы получаете в подарок доступ к курсу «AgentOps» + ещё один любой курс Академии на выбор — В деньгах это два топовых курса по автоматизации и контролю ИИ всего за 134.000 ₽ вместо 263.000 ₽ 🔥 А за счет третьего курса (например, можно выбрать «Математику») вы соберете мощный стек и освоите целое востребованное направление. — Платеж можно разбить на несколько частей с помощью беспроцентной рассрочки.
👉 Получить демо-урок и зафиксировать спецпредложение 3 в 1

declare(strict_types=1) определяет режим проверки типов для…
Anonymous voting

🔍 Работа с openssl Сертификат на проде истёк, а вы узнали от пользователей? openssl s_client покажет всю цепочку сертификатов, даты истечения и проблемы за одну команду. 🔹 Зачем это нужно — Проверка SSL без браузера: работает на любом сервере через SSH. — Показывает всю цепочку: leaf, intermediate, root. — Видны даты: Not Before и Not After и можно настроить алертинг до истечения. 🔹 Как использовать — Проверить сертификат сайта: openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates — Вся цепочка: openssl s_client -connect example.com:443 -showcerts </dev/null — Subject и issuer: echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -subject -issuer — Проверить локальный файл: openssl x509 -in cert.pem -noout -text — Дней до истечения: echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate

✔️ PHP-тест: статус, которого нет в коде Деплоя и релиза ещё не было, а 500-е посыпались сами собой 👇 📦 Задание Интернет-магазин. Поддержка через админку добавила новый статус заказа refunded (возврат). Нужно было для отчётности, в БД просто появилось новое значение. Через час часть страниц «Мои заказы» начала отдавать 500. Падают только заказы, которым проставили новый статус.
// src/Order/OrderStatusLabel.php
class OrderStatusLabel
{
    public function render(string $status): string
    {
        return match ($status) {
            'new'       => 'Новый',
            'paid'      => 'Оплачен',
            'shipped'   => 'Отправлен',
            'delivered' => 'Доставлен',
            'cancelled' => 'Отменён',
        };
    }
}

// src/Order/OrderCard.php
class OrderCard
{
    public function __construct(private readonly OrderStatusLabel $label) {}

    public function build(Order $order): array
    {
        return [
            'id'     => $order->getId(),
            'status' => $this->label->render($order->getStatus()),
        ];
    }
}
🔹 Задачи — Объяснить, чем поведение match тут отличается от switch и почему это привело к 500 — Предложить способ сделать код устойчивым к новым значениям, но НЕ замаскировать реальные баги Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.

🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru Proglib.аcademy вмест
🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru Proglib.аcademy вместе с cloud․ru провели вебинар, где разобрали реальные боли проектирования автономных систем. Вы просили запись встречи — она уже в открытом доступе! Что внутри: — критерии выбора между одним агентом и мультиагентной системой; — разбор популярных архитектурных ошибок; — реальные ограничения современных ИИ-агентов; — практические рекомендации по проектированию агентных систем. 👉 Посмотреть запись можно тут: ● VK ● YouTube

ℹ️ Eloquent Query Classes: дать важному запросу имя Eloquent отличный слой работы с БД, и большую часть времени where()->with()->paginate() прямо в контроллере или джобе — это нормально. Лишняя абстракция на каждый чих только мешает. Но проект растёт, и часть запросов перестаёт быть деталью реализации. Они становятся частью бизнес-логики. Один и тот же фильтр всплывает в дашборде, экспорте, отчёте, фоновой джобе и API. Дублируешь — копии разъезжаются. Прячешь в модель, она пухнет от скоупов и статиков. В этот момент запросу пора дать имя. 🔹 Что это Query Class — это Action-паттерн, применённый к запросам. Один публичный вход — handle(). Принимает параметры, строит/выполняет запрос, возвращает результат: коллекцию, пагинатор, агрегат, число затронутых строк или Builder, если вызывающему нужно продолжить композицию.
final readonly class PendingOrdersQuery
{
    public function handle(?int $merchantId = null, int $perPage = 50): LengthAwarePaginator
    {
        return Order::query()
            ->with(['customer', 'payment'])
            ->whereIn('status', [OrderStatus::Pending, OrderStatus::PaymentFailed])
            ->where('created_at', '<=', now()->subMinutes(15))
            ->when($merchantId !== null,
                fn (Builder $q) => $q->where('merchant_id', $merchantId))
            ->latest()
            ->paginate($perPage);
    }
}
Контроллер больше не знает определения «заказов, требующих внимания». Это определение теперь называется PendingOrdersQuery. 🔹 Это НЕ репозиторий Репозиторий обычно оборачивает каждый метод модели в generic-CRUD и притворяется, что БД нет. Query Class делает обратное: не прячет Eloquent, а централизует один конкретный важный запрос. Репозиторий = источник данных. Query Class = одна операция против БД с чёткой целью. 🔹 А чем плохи local scopes? Ничем. Для переиспользуемого ограничения, которое естественно принадлежит модели, скоуп — первый инструмент. Query Class уместен, когда запрос перерос простое ограничение: координирует несколько скоупов, тащит кучу опциональных фильтров, рулит eager loading под конкретный экран, возвращает агрегаты, используется из нескольких точек или требует отдельных тестов. И они отлично работают вместе: модель владеет доменным ограничением (needingAttention()), Query Class — сценарием использования БД. 🔹 handle() возвращает результат или Builder? Единый результат — выполняй внутри (->count(), ->paginate()). Один запрос нужен разным потребителям с разными типами результата — верни Builder:
$articles = new PublishedArticlesQuery()->handle()->paginate(12);
$urls     = new PublishedArticlesQuery()->handle()->get();
Только не превращай класс в свалку публичных методов — это снова тот самый generic-репозиторий. Хорошие Query Classes скучные и сфокусированные. 🔹 Писать тоже умеют Если ценность именно в самой операции с БД, запрос на запись тоже подходит:
final readonly class ExpireAbandonedOrdersQuery
{
    public function handle(CarbonImmutable $expiredBefore): int
    {
        return Order::query()
            ->where('status', OrderStatus::Pending)
            ->where('created_at', '<=', $expiredBefore)
            ->update(['status' => OrderStatus::Expired, 'expired_at' => now()]);
    }
}
Но если запись часть бизнес-воркфлоу (сайд-эффекты, диспатч джоб, смена стейта), её место в Action, а не здесь. 🔹 Когда использовать Когда у операции есть бизнес-смысл: CustomersEligibleForDiscountQuery, InvoicesReadyToBeChargedQuery. Когда запрос повторяется, тяжёлый по фильтрам/eager loading, живёт в отчётах и фоне, должен тестироваться отдельно, а модель уже захлёбывается скоупами. Бонус — онбординг: новичок найдёт SearchOrdersQuery быстрее, чем цепочку в недрах контроллера. 🔹 Когда НЕ использовать Article::findOrFail($id) не нуждается в FindArticleByIdQuery. Если имя класса просто дублирует метод Eloquent, если запрос в одном месте и прост, если скоуп уже всё выражает — не плоди классы. Начинай с чистого Eloquent. Выделяй Query Class, когда запрос это заслужил. 🔹 Тесты Тестируем не Eloquent (его уже протестировали в Laravel), а наши правила: какие записи попадают, какие отсекаются, в каком порядке. Один тест на дефолтное поведение + точечные на важные фильтры и рискованные края. Комбинаторика всех фильтров не нужна. 🔹 Пять правил на каждый день — Имя по бизнес-вопросу (PendingOrdersQuery), а не по операции (GetOrdersQuery) — С записями избирательно: бизнес-правила → Action — Без абстрактных базовых классов, пока нет реального дублирования — Один публичный метод handle(), остальное private — Не прячь Eloquent ради пряток. Возвращать Builder нормально Ценность паттерна не в количестве классов, а в том, что код становится легче понимать, менять и доверять ему со временем.

🤖 Запускаем новый курс: «Spec-Driven Development»! Всем надоело, что ИИ-агенты (Cursor, Claude) генерируют сотни строк хаоти
🤖 Запускаем новый курс: «Spec-Driven Development»! Всем надоело, что ИИ-агенты (Cursor, Claude) генерируют сотни строк хаотичного кода, который приходится переписывать. Дело не в нейросети, а в том, что вы заставляете её угадывать условия задачи. На курсе вы освоите методологию SDD (Spec-Driven Development) — управление ИИ через спецификации (спеки) и тесты вместо «вайб-кодинга». Как это работает? До генерации кода вы фиксируете в спеке контракты, инварианты и граничные случаи. Документ четко определяет ЧТО делать, сводя лотерею в PR к нулю. За 8 недель с экспертами из BigTech вы: 🔹 Встроите ИИ в личный или командный workflow. 🔹 Превратите генерацию кода в предсказуемый инженерный процесс. 🔹 Перестанете перепроверять за моделями каждую строчку. 📖 Полный разбор методологии с примерами и готовый промпт для генерации спеки — в нашей статье 👉 Освоить SDD и ускорить разработку

⌨️ Топ-вакансий по PHP за неделю Разработчик PHP — удалёнка — Реактив Senior/Lead Backend Developer — офис (Москва) — ECOS Senior Full-stack разработчик (PHP) — удалёнка — Miractal ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

👀 Умеете строить предсказуемую архитектуру с ИИ? Станьте спикером Proglib academy Мы в Proglib.academy запускаем курс по Spe
👀 Умеете строить предсказуемую архитектуру с ИИ? Станьте спикером Proglib academy Мы в Proglib.academy запускаем курс по Spec-Driven Development (SDD) — учим разработчиков управлять ИИ-агентами (Cursor, Copilot, Claude) через спецификации, контекст и тесты, чтобы не перепроверять за нейросетью каждую строку.
Для этого курса мы ищем классных спикеров-практиков.
➡️ Что требуется от вас? ● BigTech бэкграунд: опыт работы разработчиком, тимлидом или архитектором в крупных технологических компаниях. ● Опыт управляемой разработки с ИИ: вы на практике знаете, как встроить AI-инструменты в личный или командный workflow (от постановки задачи до ревью AI-кода). ● Системный подход: умение превращать хаотичную генерацию кода в предсказуемый инженерный процесс (работа с архитектурой, чек-листами, легаси и покрытием тестами). ➡️ Что мы предлагаем? ● Достойную оплату за подготовку материалов и проведение занятий. ● Мощное продвижение личного бренда через медиаресурсы Proglib (наша аудитория — 1 млн+ айтишников). ● Возможность публиковать свои экспертные материалы и статьи на наших площадках. ● Доступ к сильному и закрытому профессиональному сообществу. Также мы ищем консультанта программы. Если вы практикующий эксперт и готовы помочь нам отвалидировать программу курса, дать рекомендации по актуальности тем и финальным результатам обучения — мы вас очень ждем. ➡️ Как с нами связаться: Telegram: @alinaa_kh E-mail: alina@proglib.io

❗️ Новый релиз В начале месяца вышел TrueAsync 0.7.0 Версия определяет необходимый API для асинхронного программирования. Релиз соединяет потоки и корутины в единое целое, позволяя комбинировать CPU BOUND/IO BOUND задачи. Дополнительное расширение-сервер на С помогает использовать async серверные приложения. 🐸 Библиотека пхпшника

Почему refcount недостаточно для освобождения всей памяти и что решает проблему?
Anonymous voting

⏰ Уже сегодня в 19:00 (МСК) стартует наш открытый урок! Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдых
⏰ Уже сегодня в 19:00 (МСК) стартует наш открытый урок! Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее. Тема:
«AI-инструменты в разработке: пишем код быстрее»
Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины. 🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei). 👉 Узнать, как ускорить разработку с AI

🔥 PHP 8.5 завёз пайпы Тот самый |>, которого ждали с 2016-го. Три RFC, Ларри Гарфилд, «третий раз — заветный».
$slug = $title
    |> trim(...)
    |> strtolower(...);
Читается сверху вниз, а не выворачивается наизнанку. Но скажем честно: — чистый сахар, те же опкоды, что и временные переменные; — (...) в каждом шаге мозолит глаз; — стрелочные функции надо оборачивать в скобки; — без PFA многоаргументные функции в пайп не засунешь; — а куда воткнуть var_dump посреди a |> b |> c? Что думаете, это шаг к читаемому функциональному PHP или сахарок, который уже раздражает в ревью? 💬 Пишите мнение в комменты 🐸 Библиотека пхпшника

🐘 В php.ini канала нашли подозрительную настройку
stories.enabled = Off
extra_formats.enabled = Off
admin.mood = tired
Хотим поправить конфиг и включить сторис. Туда удобно выносить короткие PHP-шпаргалки, вопросы с собесов, мини-разборы, опросы и ссылки, которые не всегда тянут на отдельный пост. Помочь просто → оформить буст канала. 🐸 Библиотека пхпшника

🔍 Работа с sed Нужно массово заменить строку во всех файлах проекта? sed -i — замена прямо в файлах, без открытия редактора, без скриптов. 🔹 Зачем это нужно — Массовый рефакторинг: переименовать endpoint, обновить URL, сменить конфиг. — Работает с пайпами и можно комбинировать с find и grep. — Поддерживает регулярки, а не просто текстовая замена. 🔹 Как использовать — Замена в файле: sed -i 's/old-api/new-api/g' config.yaml — Во всех файлах рекурсивно: find . -name "*.yaml" -exec sed -i 's/old-api/new-api/g' {} + — Удалить строки с паттерном: sed -i '/DEBUG/d' app.log — Вставить строку после совпадения: sed -i '/server {/a\ listen 443 ssl;' nginx.conf — На macOS: sed -i '' 's/old/new/g' file.txt (пустой суффикс бэкапа) 💡 Перед массовым sed -i всегда делайте dry run: grep -r "old-api" --include="*.yaml" — убедитесь, что замена затронет только нужные файлы. И коммитьте перед заменой, git diff покажет, если что-то пошло не так. 🐸 Библиотека пхпшника