ar
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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

تُعد قناة Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 10 712 مشتركاً، محتلاً المرتبة 11 598 في فئة التكنولوجيات والتطبيقات والمرتبة 61 274 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 10 712 مشتركاً.

بحسب آخر البيانات بتاريخ 05 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -34، وفي آخر 24 ساعة بمقدار -1، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 15.28‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 9.13‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 637 مشاهدة. وخلال اليوم الأول يجمع عادةً 978 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 11.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل php, laravel, пхпшника, artisan, api.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Все самое полезное для пхпшника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/bca892d6 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 06 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

10 712
المشتركون
-124 ساعات
-97 أيام
-3430 أيام
أرشيف المشاركات
 ♻️ Redis-кеш с AI Настроить кеш через Redis несложно. Но зачем копировать код из старого проекта, бояться что-то потерять, когда можно сгенерировать эту часть. Промпт, который закроет этот вопрос:
Ты Senior PHP-разработчик. Сгенерируй модуль кеширования для Laravel с Redis, с учётом всех современных паттернов, устойчивости и тестирования. Требования: Использование Redis через phpredis или predis (с учётом конфигурации в .env) Кеширование с разными TTL для разных типов данных (разделение по Cache Store) 2 сервиса с кешированием: Стратегия cache-aside (чтение из кеша и обновление вручную) Стратегия write-through (автоматическое обновление кеша при записи данных) Обработка инвалидации кеша при изменении данных Кастомная обработка ошибок: Fallback на in-memory или file cache (без исключений при недоступности Redis) Логирование ошибок кеширования с уведомлением Применение circuit breaker и retry паттернов при сете ошибок Redis Защита от слишком частых запросов через кеширование с TTL и expiration для разных кешей Изоляция кеш-слоя с использованием сервисов и репозиториев (не Cache фасад в контроллерах) Настройки в .env и конфигурации кеша Простой и понятный конфиг с разделением кешей для разных типов данных Юнит-тесты с использованием Testcontainers для запуска Redis в Docker Тестирование fallback-механизмов Мокирование с имитацией недоступности Redis Тесты на использование кеша с разными TTL Стек: PHP 8.1+, Laravel 9.x, Redis, PHPUnit, Docker, Testcontainers
Библиотека пхпшника

🧠 PHP-лайфхак Хочешь ловить баги до запуска кода? Используй статический анализ. Это инструмент, который проверяет твой PHP-код на ошибки, несоответствия типам и подозрительные конструкции — без выполнения программы. 🔍 Как это работает 🧩 Установи PHPStan: composer require --dev phpstan/phpstan Запусти анализ: ./vendor/bin/phpstan analyse src --level=max --level=max включает максимально строгую проверку. Можно использовать уровни от 0 до 9 — начни с 5–6, чтобы не утонуть в предупреждениях. ⚡️ Что даёт PHPStan / Psalm 🐞 Находит ошибки типов ещё до запуска кода 🚫 Предупреждает о неиспользуемых переменных и мёртвом коде 🧩 Помогает навести порядок в архитектуре 🔒 Снижает риск багов при рефакторинге 💡 Интеграция с Composer и CI/CD Добавь команду в composer.json: "scripts": { "analyze": "phpstan analyse src --level=max" } Теперь можно запускать проверку просто: composer analyze А в CI — добавить шаг перед деплоем, чтобы ни один коммит с ошибками типов не ушёл в прод. Библиотека пхпшника

⌨️ Топ-вакансий по PHP за неделю PHP Developer (Laravel) - 150 000 - 200 000₽ - офис/гибрид/удалёнка (Ульяновск) Backend-разработчик (PHP) - до 220 000 ₽ - офис/гибрид (Москва) Старший fullstack-разработчик PHP (Laravel) - от 300 000 до 350 000 ₽ - удалёнка ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

#байтовый_юмор
#байтовый_юмор

💬 Давайте обсудим К статье на Хабре «Я два месяца платил 300к человеку, который тихо скармливал мои задачи в ChatGPT» уже почти 900 комментов. Что думаете, пишите в комменты? #междусобойчик

📊 readonly properties vs private + getter До 8.1 иммутабельность в value objects эмулировали через private + геттер. Это работало, но создавало шум: конструктор, приватное свойство, метод. Три места ради одной идеи.
// До
class Money {
    private int $amount;
 
    public function __construct(int $amount) {
        $this->amount = $amount;
    }
 
    public function getAmount(): int {
        return $this->amount;
    }
}
readonly убирает весь этот церемониал:
// После
class Money {
    public function __construct(
        public readonly int $amount,
    ) {}
}
Читается как контракт: свойство публично, но записать его можно только один раз при инициализации. Повторная запись → Error, не предупреждение. Когда readonly не подходит: 1. Нужна ленивая инициализация. readonly нельзя присвоить вне конструктора (до PHP 8.4 с хуками). 2. Клонирование с изменением. clone с readonly требует PHP 8.3 (readonly классы + clone в new static). 3. Моки в тестах. Если тест хочет подменить значение readonly-свойства через рефлексию, получит Error. PHP 8.2 добавил readonly классы — все свойства автоматически readonly:
readonly class Coordinates {
    public function __construct(
        public float $lat,
        public float $lng,
    ) {}
}
Хорошо для DTO, value objects, команд и событий. Плохо там, где нужна мутация или частичная инициализация. Правило простое: если объект концептуально иммутабелен → readonly. Если есть хоть одна причина менять состояние после создания → private + логика в методах. 🐸 Библиотека пхпшника #элементарный_выбор

Что действительно ускоряет автозагрузку на проде?
Anonymous voting

🔍 Убийца перфоманса, который можно пропустить в ревью Классика, которую все знают, но продолжают допускать. Особенно в Eloquent. 🔹 Проблема
$orders = Order::all();
 
foreach ($orders as $order) {
    echo $order->user->name; // SELECT * FROM users WHERE id = ? (на каждой итерации!)
}
🔹 Решение — eager loading
$orders = Order::with('user')->get();
// Теперь 2 запроса вместо N+1
🔹 Как поймать в проде Подключите debugbar или telescope в dev-среде. Или логируйте запросы вручную:
DB::listen(function ($query) {
    Log::info($query->sql, $query->bindings);
});
💡 Если видите один и тот же запрос десятки раз в логах — это он. Ищите все места, где обращаетесь к связям внутри цикла. Библиотека пхпшника #vardump

Точки роста PHP-разработчика Наш подписчик спрашивает
«Я PHP-разработчик с опытом 1,5 года. Но ощущаю, что топчусь на месте. Какие навыки стоит развивать, чтобы сдвинуть с мертвой точки через год-два ? Углубляться в фреймворки или лучше прокачивать soft skills?» Алексей, PHP Developer
💬 Делитесь в комментариях: — Какие технические навыки необходимы для роста — Насколько важны фреймворки и архитектура — Какие soft skills действительно ценят P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут. #междусобойчик

✔️ PHP-тест: Typed Properties + Lazy Initialization + Объект в статике Баг, который живёт в проде месяцами и проявляется только под нагрузкой 👇 📦 Задание Команда пишет модуль биллинга. Ты написал быстрый класс-обёртку для работы с тарифами. Код прошёл ревью, всё работало на стейджинге. В проде через неделю начались жалобы: у части пользователей неправильно считается стоимость. Причём только в пиковые часы.
// src/Billing/TariffCalculator.php
class TariffCalculator
{
    private static TariffConfig $config;
    private static array $cache = [];

    public static function init(array $rawConfig): void
    {
        self::$config = new TariffConfig($rawConfig);
    }

    public static function calculate(int $userId, int $units): float
    {
        $key = $userId . ':' . $units;

        if (isset(self::$cache[$key])) {
            return self::$cache[$key];
        }

        $price = self::$config->getBasePrice()
            * $units
            * self::$config->getUserMultiplier($userId);

        self::$cache[$key] = $price;

        return $price;
    }

    public static function resetCache(): void
    {
        self::$cache = [];
    }
}

// src/Billing/TariffConfig.php
class TariffConfig
{
    private float $basePrice;
    private array $multipliers;

    public function __construct(array $config)
    {
        $this->basePrice   = (float) $config['base_price'];
        $this->multipliers = $config['multipliers'] ?? [];
    }

    public function getBasePrice(): float
    {
        return $this->basePrice;
    }

    public function getUserMultiplier(int $userId): float
    {
        return $this->multipliers[$userId] ?? 1.0;
    }
}

// bootstrap.php — вызывается один раз при старте воркера
TariffCalculator::init(loadConfigFromDB());

// Где-то в обработчике запроса
$price = TariffCalculator::calculate($user->id, $request->units);
🔹 Задачи — Найти все архитектурные и логические проблемы в коде (их несколько) — Объяснить, почему баг проявляется только под нагрузкой и не воспроизводится на стейджинге — Предложить правильное решение Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.

Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру. Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия. По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов. Также в программе: — оценка качества, трейсинг и защита от деградации пайплайнов; — мультиагентные паттерны и интеграция по протоколу MCP; — локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу). Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям. Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест. 👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде

⚙️ Laravel Process Pipe С версии Laravel 10.7 появилась нативная поддержка конвейера процессов (pipe). Теперь можно легко передавать вывод одного процесса на вход другого — прямо из PHP-кода, без костылей.
use Illuminate\Process\Pipe;
use Illuminate\Support\Facades\Process;

$result = Process::pipe(function (Pipe $pipe) {
    $pipe->command('cat example.txt'),
    $pipe->command('grep -i "laravel"'),
});

if ($result->successful()) {
    // ...
}
Это аналог привычного cat example.txt | grep -i "laravel" в терминале, только внутри Laravel. Зачем это нужно? — Обработка файлов и потоков данных без временных переменных — Чистый и читаемый код вместо вызовов shell_exec — Удобное тестирование через фейковые процессы Маленькая фича, но приятная 🙂 Библиотека пхпшника #vardump

Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру. Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия. По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов. Также в программе: — оценка качества, трейсинг и защита от деградации пайплайнов; — мультиагентные паттерны и интеграция по протоколу MCP; — локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу). Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям. Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест. 👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде

#байтовый_юмор
#байтовый_юмор

🐘 PHP для начинающих (и напоминание для опытных) 🔹 Query Scopes Смотришь на свой код и замечаешь одно и то же в пяти местах:
->where('status', 'active')->where('deleted_at', null)
->where('status', 'active')->where('deleted_at', null)
->where('status', 'active')->where('deleted_at', null)
Это не переиспользование кода. Это его копирование. Разница важная. ▪️ Local Scope — прячем логику в модель
// User.php
public function scopeActive(Builder $query): Builder
{
    return $query->where('status', 'active')
                 ->whereNull('deleted_at');
}

public function scopeVerified(Builder $query): Builder
{
    return $query->whereNotNull('email_verified_at');
}
Теперь вместо цепочки условий — читаемый вызов
// Было
User::where('status', 'active')
    ->whereNull('deleted_at')
    ->whereNotNull('email_verified_at')
    ->get();

// Стало
User::active()->verified()->get();
▪️ Scope с параметром Иногда нужна гибкость. Scope принимает аргументы:
public function scopeOlderThan(Builder $query, int $days): Builder
{
    return $query->where('created_at', '<', now()->subDays($days));
}
phpUser::active()->olderThan(30)->get();
▪️ Global Scope — когда условие должно быть всегда Если SoftDeletes работает по всему приложению — это глобальный скоуп под капотом. Можно написать свой:
// В модели
protected static function booted(): void
{
    static::addGlobalScope('tenant', function (Builder $builder) {
        $builder->where('tenant_id', auth()->user()?->tenant_id);
    });
}
Теперь все запросы к этой модели автоматически фильтруются по тенанту. Без единого where в контроллерах. Скоупы — это словарь твоей предметной области. Когда читаешь User::active()->verified() — понимаешь смысл без погружения в детали. Это и есть чистый код. Библиотека пхпшника #php_азбука

👀 Reli — профилировщик выборки или памяти Это профилировщик, написанный на PHP, который считывает информацию о запуске вирту
👀 Reli — профилировщик выборки или памяти Это профилировщик, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения. 🔗 Github #инструменты

#байтовый_юмор
#байтовый_юмор

⌨️ Топ-вакансий по PHP за неделю PHP разработчик (Symfony, Rest API) — от 100 000 до 150 000 ₽ — удалёнка Middle PHP разработчик — от 150 000 до 250 000 ₽ — гибрид/удалёнка (Воронеж) Team Lead (PHP, Laravel) — от 500 000 ₽ — удалёнка/гибрид (Москва) ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

Зачем использовать yield вместо return с массивом? yield превращает функцию в генератор. Вместо того чтобы собрать все данные в массив и вернуть целиком, функция отдаёт значения по одному, по мере запроса. Главный профит — память. Если обрабатываешь CSV на 500 тысяч строк, с массивом ты загрузишь всё в RAM разом. С генератором в памяти живёт одна строка. Генератор реализует интерфейс Iterator, с ним работает foreach. Минус — нельзя перемотать назад, обойти можно только один раз. Используй когда данных много, порядок линейный, и случайный доступ не нужен.

Кажется, мы окончательно перешли от игрушек к суровому AgentOps Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход. Что внутри: — пошагово строим готовые системы на LangGraph, CrewAI и MCP; — настраиваем кэширование и роутинг, чтобы бот не сожрал токены; — разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop; — выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ. В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.
Кстати, на днях мы пилили агента в прямом эфире, если пропустили — есть запись вебинара.
Сегодня последний день, когда можно забрать курс по старым ценам. Базовый тариф сейчас стоит 49 000 ₽ (вместо 62 990 ₽), продвинутый трек — 99 000 ₽ (вместо 124 990 ₽). Если не хочется отдавать всю сумму сразу, есть рассрочка. Торопитесь — на потоке осталось всего 5 мест! → Зафиксировать цену и перейти к сборке своих агентов