Питання на співбесіді: Debugging
Найпопулярніші питання з реальних Laravel/PHP співбесід для всіх рівнів
3 питання
Обидва виводять значення в зручному вигляді через Symfony VarDumper:
dump($var)- друкує значення й продовжує виконання.dd($var)- «dump and die»: друкує й зупиняє виконання.
dump($user); // подивитись і йти далі
dd($request->all()); // подивитись і зупинитись
Споріднене: dump() для ланцюжків (->dump() на колекції/запиті), ray() (пакет), Log::debug() для логів замість виводу на екран.
Логування в Laravel побудоване на Monolog; канали налаштовуються в config/logging.php.
Log::info('Замовлення створено', ['id' => $order->id]);
Log::channel('slack')->critical('Платіж не пройшов');
Типи каналів: single (один файл), daily (ротація по днях), slack, papertrail, stderr, а також stack - який пише одразу в кілька:
'stack' => ['driver' => 'stack', 'channels' => ['daily', 'slack']],
Практики: рівні (debug…emergency), структуроване логування з контекстом, маскування PII, окремий канал для критичних подій у Slack/Sentry. У проді LOG_LEVEL зазвичай warning+.
Telescope - інструмент дебагу/спостереження. Збирає й показує у дашборді: запити, винятки, SQL-запити (з часом і дублями), завдання черг, листи, нотифікації, кеш, події, HTTP-клієнт.
php artisan telescope:install
- Незамінний для пошуку N+1 (бачиш усі запити сторінки), повільних місць, помилок у чергах.
- Дані зберігаються в БД; у проді обмежують доступ через gate
viewTelescopeта вмикають sampling, бо обсяг записів великий.
На відміну від Horizon (керування чергами), Telescope - про діагностику всього застосунку. У продакшені часто доповнюють зовнішнім APM (Sentry, Datadog).