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

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

Открыть в Telegram

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

Больше

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

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

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

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

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

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

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

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

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

10 698
Подписчики
Нет данных24 часа
-167 дней
-4030 день
Архив постов
📊 Аналитика поведения: 5 инструментов, которые стоит знать Гуглишь «best analytics tools» и получаешь кашу из BI-дашбордов, product analytics и session replay в одной куче. Разложу по полочкам именно поведенческую аналитику и конкурентную разведку — то, что реально нужно, когда задача «понять, почему юзеры не конвертятся». Hotjar — безопасный дефолт. Хитмапы, записи сессий, фидбек-виджеты. Порог входа минимальный, поэтому его ставят первым и часто на нём остаются. Если нужно быстро показать продакту «вот тут юзеры отваливаются» — закроет задачу. Но если серьёзно копаете конверсии, ему начинает не хватать глубины. Mouseflow — для тех, кто реально сидит в записях и воронках. Friction score, form analytics, 6 типов хитмап (включая geo и live). По CRO и e-commerce — пожалуй, самый сильный вариант. Подвох: кредитные лимиты и капы на объём сессий начинают кусаться при росте трафика. Crazy Egg — максимально простой. Хитмапы, скроллмапы, оверлеи. Не нужна глубокая аналитика, нужно за 15 минут понять, куда кликают и докуда скроллят — это оно. Kissmetrics — другая лига. Event-level аналитика, retention, lifecycle. Заточен под SaaS с логин-зоной, где важен путь конкретного юзера, а не агрегированные хитмапы. Overhead на внедрение ощутимый, комьюнити вокруг инструмента тоньше, чем у Hotjar. Similarweb — вообще не про ваш сайт, а про чужие. Бенчмарки трафика, каналы, доли рынка. Цифры направляющие, не абсолютные — относитесь как к компасу, не как к GPS.

🧹 Git-команда, которая спасёт ваш репозиторий от мусора Проблема: вы удалили ветки, сделали git reset, отменили мёржи, но репозиторий почему-то весит всё больше. git clone на новом месте занимает вечность. Куда уходит место? Дело в том, что Git — барахольщик. Он хранит все объекты: старые блобы, недостижимые коммиты, забытые stash'ы. Даже то, что вам давно не нужно. 💡 Решение: git gc и его старший брат git gc --aggressive Рассмотрим все все возможности git gc. 1️⃣ Сколько мусора накопилось
git count-objects -vH
Обратите внимание на size-pack — это реальный вес вашего репо. 2️⃣ Самые тяжёлые объекты в истории
git rev-list --objects --all \
  | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
  | awk '/^blob/ {print $3, $4}' \
  | sort -rn \
  | head -10
Часто находятся артефакты сборки, дампы БД или случайно закоммиченные .jar на 200 МБ 😬 3️⃣ Запустите агрессивную сборку мусора
git gc --aggressive --prune=now
--aggressive заставляет Git перепаковать объекты с нуля, а --prune=now удаляет недостижимые объекты немедленно, не дожидаясь дефолтных двух недель. 4️⃣ Сравните результат
git count-objects -vH
На живых проектах с историей в 2+ года разница бывает в разы. ⚠️ --prune=now безвозвратно удалит объекты, на которые нет ссылок. Если вы планировали восстановить что-то через git reflog — сделайте это до запуска.

✔️ PHP-тест: Идемпотентность, которой нет Пользователь нажал «Оплатить» один раз. Деньги списались дважды. 📦 Задание Фича: интеграция с платёжным шлюзом. Платёж создаётся на бэке, пользователь редиректится на страницу шлюза, после оплаты шлюз дёргает webhook. По webhook'у выдаётся доступ к продукту. Жалобы начались через две недели после релиза. Только у части пользователей, только в часы пик. У некоторых списывалось дважды, у других доступ не выдавался вовсе.
// src/Payment/WebhookHandler.php
class WebhookHandler
{
    public function __construct(
        private PaymentRepository $payments,
        private OrderRepository   $orders,
        private AccessService     $access,
        private Mailer            $mailer,
    ) {}

    public function handle(array $payload): void
    {
        $externalId = $payload['payment_id'];
        $status     = $payload['status'];

        if ($status !== 'success') {
            return;
        }

        $payment = $this->payments->findByExternalId($externalId);

        if ($payment === null) {
            return;
        }

        $order = $this->orders->findById($payment->orderId);

        if ($order->status === 'paid') {
            return;
        }

        $this->orders->markAsPaid($payment->orderId);
        $this->access->grantForOrder($order);
        $this->mailer->sendReceipt($order);
    }
}

// src/Repository/OrderRepository.php
class OrderRepository
{
    public function __construct(private PDO $pdo) {}

    public function findById(int $id): Order
    {
        $stmt = $this->pdo->prepare(
            'SELECT * FROM orders WHERE id = ?'
        );
        $stmt->execute([$id]);
        return Order::fromRow($stmt->fetch(PDO::FETCH_ASSOC));
    }

    public function markAsPaid(int $orderId): void
    {
        $stmt = $this->pdo->prepare(
            'UPDATE orders SET status = ? WHERE id = ?'
        );
        $stmt->execute(['paid', $orderId]);
    }
}
🔹 Задачи — Объяснить, как именно возникает двойное списание при одном нажатии пользователя — Исправить WebhookHandler::handle Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.

🗓 14 мая в 19:00 (Мск) встречаемся в онлайне. Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало. В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать. Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM. - Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества. - Ответим на ваши вопросы и разберем кейсы участников.
🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы. 👉 Зарегистрироваться на вебинар

Видеосообщение00:40

🔼 Улучши UX одним методом При создании опций для CLI-приложений можно улучшить UX, реализовав автозаполнение для пользовател
🔼 Улучши UX одним методом При создании опций для CLI-приложений можно улучшить UX, реализовав автозаполнение для пользователя. Это можно сделать с помощью метода anticipate, предоставляемого Laravel 🚀 Библиотека пхпшника #vardump

Как правильно определять границы сервисов в микросервисной архитектуре? Один из недооценённых скиллов в разработке — это умение провести правильную границу между сервисами. Большинство «распределённых монолитов», которые мы встречаем в продакшене, рождаются именно здесь. Разобрали тему — держи шпаргалку 👇 🔹 Что такое Service Boundary Это контракт на три вещи: — за что сервис отвечает; — какими данными он владеет; — как он общается с соседями. Пример: в компании HR не лезет в финансы, а склад не занимается зарплатами. Так же должны работать твои сервисы. 🔹 4 принципа, которые работают 1. Business Capability First Режь по бизнес-функциям, а не по техническим слоям. OrderService, PaymentService, UserService — потому что именно так бизнес думает о системе. 2. Single Responsibility Один сервис — одна ответственность. Если в описании сервиса есть союз «и», это уже тревожный звоночек 🚨 3. Data Ownership У каждого сервиса своя БД. Без исключений. Shared database = shared pain. 4. Loose Coupling Только API, никакого прямого доступа к чужим таблицам. 🔹 Классический антипаттерн
// ❌ Бизнес-логика смешана в одном сервисе
class BadOrderService
{
    public function processOrderAndPayment(int $id): string
    {
        $order = $this->orderRepository->findById($id)
            ?? 'Order not found';

        $paymentStatus = 'Payment Successful'; // 🚨 чужая ответственность

        return $order . ' | ' . $paymentStatus;
    }
}
Выглядит безобидно, пока не нужно масштабировать платежи отдельно, сменить платёжного провайдера или добавить retry-логику только для оплаты. Тут и начнутся реальные проблемы. 🔹 Советы из практикиНачни с монолита. Не дроби систему заранее. Сначала пойми домен, потом режь по швам. → Следи за chatty communication. Если сервис делает 10 вызовов к соседям на каждый запрос — граница явно проведена не там. → Изучи DDD. Bounded Context из Domain-Driven Design — лучший инструмент для поиска правильных границ. Инвестиция окупается быстро. 💬 Делимся в комментах страшными историями god-сервисов

🎤 Ваши знания по ИИ-агентам + наша аудитория в 1 млн человек = профит Мы в Proglib активно качаем тему ИИ-агентов. Если вы в
🎤 Ваши знания по ИИ-агентам + наша аудитория в 1 млн человек = профит Мы в Proglib активно качаем тему ИИ-агентов. Если вы в теме, то у нас есть предложение 👇 Что с нас? - Огромный охват: пропиарим ваши соцсети и продукты на 1 000 000+ айтишников. - Личный бренд: станете узнаваемым экспертом в самой горячей нише 2026 года. - Никакой рутины: наши редакторы сами упакуют ваши мысли в крутые посты. Что с вас? Любой экспертный контент по ИИ-агентам: кейсы из прода, шпаргалки, статьи, наработки по стеку (LangGraph, CrewAI, AutoGen и др.) или просто мысли по архитектуре. 👉 Стать экспертом и заявить о себе

⌨️ Топ-вакансий по PHP за неделю PHP/Vue.js Developer — офис (Москва) — TRIBE PHP и Node.js разработчик — от 1000 до 2500 $ — удалёнка РНР-разработчик (Авто.ру Бизнес) — 200 000 —‍ 300 000 ₽ — гибрид (Москва, Санкт-Петербург ) ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

⌛ Сохраняйте шпаргалку по HTTP кодам
Сохраняйте шпаргалку по HTTP кодам

🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)? Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или
🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)? Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или выдает мусор? Приглашаем на открытый вебинар, где разберем реальную боль внедрения LLM-агентов и научимся делать так, чтобы «всё работало». 🗓️ Когда: 7 мая в 19:00 МСК ⏱️ Формат: 60 минут мяса + 30 минут ответов на ваши вопросы 🧑🏻‍💻 Кто вещает: Эмиль Сатаев — Backend Platform Developer (8+ лет в разработке). Человек, который своими руками внедряет LLM и агентные системы в реальные коммерческие сервисы. 🎁 Главный бонус для онлайна: Только участникам прямого эфира подарим уникальный промокод на скидку 10.000 ₽ на большой курс AgentOps. 👉 Занять место на вебинаре

Что будет результатом кода?
Anonymous voting

🏭 PHP дотянулся до промышленных PLC Исторически связать PHP с OPC UA (протокол SCADA, контроллеров Siemens, датчиков Industry 4.0) означало городить шлюз на Python/Node, тащить C-расширения через FFI или звать внешние процессы из шелла. Костыли, латенси, второй стек в проде. Проект php-opcua закрывает этот разрыв — нативная реализация бинарного протокола OPC UA на чистом PHP. Ноль C-зависимостей кроме ext-openssl. Что в экосистеме: — opcua-client: транспорт, крипто (10 security policies, включая ECC), сессии, подписки; — opcua-session-manager: ReactPHP-демон держит сессию живой, хендшейк 150мс → 5мс на запрос; — laravel-opcua и symfony-opcua: фасады, DI, события, кеш через Redis/PSR-16; — opcua-client-nodeset: 807 сгенерённых DTO из 51 companion spec (Robotics, CNC, ISA-95).
$client = ClientBuilder::create()
    ->connect('opc.tcp://192.168.1.100:4840');

$temp = $client->read('ns=2;s=Temperature');
echo $temp->getValue(); // 23.5
Три строки и Eloquent-модель читает температуру с цеха. Без сайдкаров. 🔗 Подробнее Библиотека пхпшника

✔️ PHP-тест: Утечка сессии между пользователями Баг не воспроизводится локально. На проде один юзер видит чужие данные 👇 📦 Задание Стартап запустил SaaS. Первые две недели тишина. А потом в поддержку прилетело: «Я зашёл в кабинет и увидел чужой аккаунт». В коде сессий и авторизации не трогали давно, там всё стабильно.
// src/Auth/UserSession.php
class UserSession
{
    private static ?User $currentUser = null;

    public static function set(User $user): void
    {
        self::$currentUser = $user;
    }

    public static function get(): ?User
    {
        return self::$currentUser;
    }

    public static function clear(): void
    {
        self::$currentUser = null;
    }
}

// src/Middleware/AuthMiddleware.php
class AuthMiddleware
{
    public function __construct(
        private readonly UserRepository $userRepository,
        private readonly JWTService     $jwt,
    ) {}

    public function handle(Request $request, callable $next): Response
    {
        $token = $request->headers->get('Authorization');

        if (!$token) {
            return new Response(status: 401);
        }

        $payload = $this->jwt->decode(str_replace('Bearer ', '', $token));
        $user    = $this->userRepository->find($payload['sub']);

        UserSession::set($user);

        return $next($request);
    }
}

// src/Controller/DashboardController.php
class DashboardController
{
    public function index(): Response
    {
        $user = UserSession::get();

        return new Response(
            body: $this->renderDashboard($user),
        );
    }
}

// src/Console/CacheWarmupCommand.php
class CacheWarmupCommand
{
    public function execute(): void
    {
        $users = $this->userRepository->findAll();

        foreach ($users as $user) {
            UserSession::set($user);
            $this->warmupForUser($user);
        }

        // прогрев завершён
    }
}
🔹 Задачи — Объяснить механизм утечки — Объяснить, как CacheWarmupCommand триггерит баг и при каком race window — Переписать UserSession так, чтобы устранить проблему архитектурно, а не патчем Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.

🏗 Laravel SaaS: как не утонуть в собственном коде через полгода Дефолтная структура Laravel отлично заходит на старте. Потом приходят мультитенантность, биллинг, сложные правила. В итоге контроллеры пухнут, логика расползается по моделям и джобам. Рабочий рецепт: модульный монолит с доменной организацией. Каждый домен — мини-приложение внутри приложения.
app/Domains/Bookings/
  Models/
  Services/
  Repositories/
  DTOs/
  Actions/
  Requests/
💡 Правила, которые реально экономят часы на рефакторинге: — контроллер принимает FormRequest, дёргает сервис, возвращает Resource; — бизнес-логика живёт в сервисах, чтобы переиспользоваться в API, CLI и очередях; — доступ к БД — через репозитории, без Booking::where() в сервисах; — сразу версионируй API (/api/v1), иначе первый же breaking change принесёт боль. По SaaS-специфике: Sanctum для SPA, Cashier + Stripe для подписок (писать биллинг руками — плохая идея), stancl/tenancy если нужна изоляция тенантов. Тяжёлое отправляем в очереди на Redis, дебаг с Telescope локально и Sentry в проде. 🔗 Читать оригинал Библиотека пхпшника #book_code