uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 461 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 11 698-o'rinni va Rossiya mintaqasida 60 802-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 10 461 obunachiga ega bo‘ldi.

26 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -35 ga, so‘nggi 24 soatda esa -5 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 16.11% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 7.39% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 685 marta ko‘riladi; birinchi sutkada odatda 773 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 2 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent php, laravel, пхпшника, artisan, api kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”

Yuqori yangilanish chastotasi (oxirgi ma’lumot 27 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

10 461
Obunachilar
-524 soatlar
-237 kun
-3530 kun
Postlar arxiv
⚠️ Уже завтра стартует курс 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 покажет, если что-то пошло не так. 🐸 Библиотека пхпшника