❓ Зачем использовать yield вместо return с массивом? yield превращает функцию в генератор. Вместо того чтобы собрать все данные в массив и вернуть целиком, функция отдаёт значения по одному, по мере запроса. Главный профит — память. Если обрабатываешь CSV на 500 тысяч строк, с массивом ты загрузишь всё в RAM разом. С генератором в памяти живёт одна строка. Генератор реализует интерфейс Iterator, с ним работает foreach. Минус — нельзя перемотать назад, обойти можно только один раз. Используй когд...
Библиотека собеса по PHP | вопросы с собеседований
Вопросы с собеседований по PHP и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9f3affba Для обратной связи: @proglibrary_feeedback_bot
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20✔️ PHP-тест: Typed Properties + Lazy Initialization + Объект в статике Баг, который живёт в проде месяцами и проявляется только под нагрузкой 👇 📦 Задание Команда пишет модуль биллинга. Ты написал быстрый класс-обёртку для работы с тарифами. Код прошёл ревью, всё работало на стейджинге. В проде через неделю начались жалобы: у части пользователей неправильно считается стоимость. Причём только в пиковые часы. // src/Billing/TariffCalculator.php class TariffCalculator { private static TariffConfig...
❓ Что такое Dependency Injection? DI — паттерн, при котором зависимости класса передаются извне, а не создаются внутри. // Плохо — жёсткая связанность: class OrderService { private $mailer; public function construct() { $this->mailer = new SmtpMailer(); // зависимость зашита внутри } } // Хорошо — DI: class OrderService { public function construct(private MailerInterface $mailer) {} } Зачем: ✔️ Легко подменить реализацию (например, для тестов — MockMailer) ✔️ Классы не знают о кон...
❓ Чем отличается Optimistic Lock от Pessimistic Lock? Pessimistic Lock — блокируем строку в БД на время транзакции. Никто другой не может её изменить до снятия блокировки. SELECT * FROM orders WHERE id = 1 FOR UPDATE; Применять когда: высокая вероятность конфликта, критичные финансовые операции, короткие транзакции. Минус: снижает throughput, риск дедлоков при блокировке нескольких строк в разном порядке. Optimistic Lock — блокировки нет. У записи есть поле version. При обновлении проверяем, что...
❓ Что такое PSR и зачем это нужно? PSR (PHP Standards Recommendations) — набор стандартов от PHP-FIG, которые обеспечивают совместимость кода между проектами и пакетами. Ключевые стандарты: • PSR-1 / PSR-12 — стиль кода (отступы, имена классов, методов) • PSR-4 — автозагрузка: пространство имён → путь к файлу • PSR-3 — интерфейс логгера (LoggerInterface) • PSR-7 — HTTP-сообщения (Request / Response) • PSR-11 — контейнер зависимостей (ContainerInterface) • PSR-15 — HTTP middleware Без PSR библиот...
❓ Что такое Composer? Composer — это инструмент для управления зависимостями в PHP-приложениях. Он позволяет легко устанавливать, обновлять и управлять библиотеками и фреймворками, которые используются в проекте. 🔹 Основные функции Composer ▪️ Установка зависимостей: Composer позволяет определить необходимые библиотеки и их версии в файле composer.json, а затем установить их с помощью команды composer install. ▪️ Обновление зависимостей: после установки библиотек, можно обновить их до последних...
Самый востребованный навык в ИТ в 2026-м — навык создания ИИ-агентов Мы полностью переработали курс «Разработка AI-агентов» под реалии 2026 года. Никакой долгой теории — с самого начала пишем код. Обучать и делиться набитыми шишками будут эксперты-практики из Газпромбанка, Альфа-Банка и других бигтехов. В программе: — архитектура автономных систем с тестированием, ReAct-циклами и контролем токенов; — практическая работа с актуальными фреймворками LangGraph, AutoGen, MCP и CrewAI; — настройка про...
Кажется, мы окончательно перешли от игрушек к суровому AgentOps Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход. На курсе мы: — пошагово строим готовые системы на LangGraph, CrewAI и MCP; — настраиваем кэширование и роутинг, чтобы бот не сожрал токены; — разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop; — выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 1...
✔️ PHP-тест: Exception handling + PDO транзакции + молчаливая потеря данных Код выглядит аккуратно. Но данные теряются, и никто не знает почему 👇 📦 Задание Есть сервис для обработки платежей. Код покрыт тестами, транзакции есть, ошибки логируются. На проде раз в несколько дней часть платежей пропадает — в БД нет записи, в логах нет ошибок, пользователь уверен что оплатил. // src/Payment/PaymentService.php class PaymentService { public function __construct( private PDO $pdo, private Logger...
❓ Что такое магические методы? Назови основные. Магические методы — методы с двойным подчёркиванием, которые PHP вызывает автоматически в определённых ситуациях. construct() / destruct() — создание и уничтожение объекта get($name) / set($name, $value) — обращение к несуществующему свойству isset($name) / unset($name) — isset() / unset() на несуществующем свойстве call($name, $args) — вызов несуществующего метода экземпляра callStatic($name, $args) — в...