🧱 Суть
Отладка (Debugging) – это процесс поиска и исправления ошибок в программе.
В PHP для этого используют:
- встроенные функции вывода (
var_dump(),print_r()) - запись ошибок в лог
- пошаговую отладку через Xdebug
- возможности IDE (например, PhpStorm или VS Code)
Отладка помогает понять:
- какие данные находятся в переменных
- почему условие не выполняется
- где возникает ошибка
- как изменяются данные во время выполнения программы
📦 Проблема
Ошибки не всегда очевидны.
Например:
$user = getUser();
echo $user['name'];Если $user равен:
nullкод завершится ошибкой.
Без отладки бывает сложно понять, какие данные реально получила программа.
✅ Решение
Использовать подходящий инструмент в зависимости от ситуации:
var_dump()– посмотреть тип и значение переменнойprint_r()– быстро вывести массив или объект- логирование – сохранить информацию в файл
- Xdebug – выполнить программу пошагово и исследовать её состояние
💻 Код
var_dump()
Выводит:
- тип данных
- значение
- размер строки
- структуру массива или объекта
Пример:
$user = [
'name' => 'Alex',
'age' => 25
];
var_dump($user);Результат:
array(2) {
["name"]=>
string(4) "Alex"
["age"]=>
int(25)
}Используется для подробной диагностики.
print_r()
Выводит данные в более компактном виде.
Пример:
print_r($user);Результат:
Array
(
[name] => Alex
[age] => 25
)Удобно использовать при просмотре массивов.
var_export()
Выводит значение в виде корректного PHP-кода.
Пример:
var_export($user);Результат:
array (
'name' => 'Alex',
'age' => 25,
)Полезно, если нужно скопировать результат обратно в код.
die() и exit()
Позволяют остановить выполнение программы.
Пример:
var_dump($user);
die();или
exit();Часто используются при локальной отладке.
Логирование ошибок
Иногда выводить данные в браузер неудобно.
Можно записывать информацию в лог:
error_log('Something went wrong');Или:
error_log(print_r($user, true));Это особенно полезно при работе с API или консольными приложениями.
Обработка исключений
При возникновении ошибки можно получить её сообщение:
try {
// ...
} catch (Exception $e) {
var_dump($e->getMessage());
}Также доступны:
$e->getCode();
$e->getFile();
$e->getLine();
$e->getTrace();Xdebug
Xdebug – расширение PHP для профессиональной отладки.
Позволяет:
- ставить точки останова (breakpoints)
- выполнять код пошагово
- смотреть значения переменных
- исследовать стек вызовов
- анализировать производительность
Обычно используется вместе с:
- PhpStorm
- VS Code
Как работает Xdebug
Обычный запуск:
Код
↓
Выполняется полностьюС Xdebug:
Код
↓
Breakpoint
↓
Остановка
↓
Просмотр переменных
↓
Следующая строкаМожно буквально пройти программу по одной инструкции.
Breakpoint
Breakpoint – точка останова.
Например:
$user = getUser();
$name = $user['name'];
saveUser($name);Если поставить breakpoint перед второй строкой, можно посмотреть:
$userдо того, как программа продолжит выполнение.
Стек вызовов (Call Stack)
Xdebug показывает путь выполнения программы.
Например:
index.php
↓
UserController
↓
UserService
↓
UserRepositoryЭто помогает быстро найти место возникновения ошибки.
Просмотр переменных
Во время выполнения можно посмотреть:
$userили
$productsбез добавления:
var_dump();в код.
Частые ошибки
Оставлять var_dump() в рабочем коде
Плохо:
var_dump($user);перед отправкой проекта.
Перед релизом весь отладочный вывод следует удалить.
Использовать die() вместо обработки ошибок
Плохо:
if (!$user) {
die('User not found');
}Лучше:
throw new Exception('User not found');или вернуть корректный HTTP-ответ.
Выводить служебную информацию пользователю
Плохо:
var_dump($_SERVER);В рабочем приложении это может раскрыть конфиденциальную информацию.
Не использовать Xdebug
При сложной логике десятки вызовов:
var_dump();становятся неудобными.
Пошаговая отладка значительно эффективнее.
🎯 Вывод
- Отладка помогает находить причины ошибок и понимать поведение программы
var_dump()показывает тип и значение переменнойprint_r()удобен для просмотра массивов и объектовvar_export()выводит данные в формате PHP-кодаdie()иexit()позволяют временно остановить выполнение программыerror_log()помогает записывать информацию в лог- Xdebug позволяет выполнять код пошагово и анализировать его состояние
- Для сложных проектов Xdebug является основным инструментом отладки