🧱 Суть

Отладка (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($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 является основным инструментом отладки

🔗 Связано