Отладка – неизбежная и необходимая часть любого цикла разработки. Пока что CakePHP не предлагает ни одного инструмента, который напрямую соединяется с IDE или редактором. CakePHP предоставляет несколько инструментов, помогающих при отладке и, показывающих что запущено «под капотом» вашего приложения.
Функция debug() – глобально доступная функция, которая работает подобно PHP функции print_r(). Функция debug() позволяет вам показать содержимое переменной несколькими различными способами. Если вы хотите, чтобы данные были показаны в дружественном HTML виде, установите второй параметр в true. По умолчанию функция также выведет файл и номер строки из которой делается вызов.
Результат этой функции отображается только если переменная ядра debug установлена в значение большее нуля.
Для того, чтобы использовать отладчик, убедитесь, что Configure::read('debug') установлена в значение большее 0.
Функция dump выводит содержимое переменной. Она выведет все свойства и методы (если таковые имеются) для переданной переменной.
<? $foo
= array(1,2,3);
Debugger::dump($foo);
//вывод
array(
1,
2,
3
)
//простой объект
$car = new Car();
Debugger::dump($car);
//вывод
Car::
Car::colour = 'red'
Car::make = 'Toyota'
Car::model = 'Camry'
Car::mileage = '15000'
Car::acclerate()
Car::decelerate()
Car::stop()?>
Создает детализированный журнал событий трассировки в момент вызова функции. Метод log() выводит данные подобно тому, как это делает Debugger::dump(), но в debug.log вместо выходного буфера. Обратите внимание, что ваш каталог app/tmp (и его содержимое) должны быть доступны для записи, чтобы функция log() работала корректно.
Возвращает текущий стек трассировки. Каждая строка трассировки включает вызываемый метод, из какого файла и строки сделан вызов.
<?//В PostsController::index()
pr( Debugger::trace() );
//вывод
PostsController::index() - APP/controllers/downloads_controller.php, line 48 Dispatcher
::_invoke() - CORE/cake/dispatcher.php, line 265 Dispatcher
::dispatch() - CORE/cake/dispatcher.php, line 237
[main] - APP/webroot/index.php, line 84?>
Выше представлен стек трассировки, сгенерированный после вызова Debugger::trace() в действии контроллера. Читая данный список снизу вверх, мы видим порядок вызова функций (стековые фреймы). В примере выше, index.php вызвал Dispatcher::dispatch(), который в свою очередь вызвал Dispatcher::_invoke(). Функция _invoke() затем вызвала PostsController::index(). Эта информация полезна, когда работаешь с рекурсивными операциями или глубокими стеками, т.к. идентифицирует какая функция сейчас запущена во время трассировки.
Захватывает фрагмент из файла $file (должен быть указан абсолютный путь), выделяет строку с номером $line и соседние для этой строки $context строк.
<?pr
( Debugger::excerpt(ROOT.DS.LIBS.'debugger.php', 321, 2) );
//выведет следующее.
Array (
[
0] => <code><span style="color: #000000"> * @access public</span></code> [
1] => <code><span style="color: #000000"> */</span></code> [
2] => <code><span style="color: #000000"> function excerpt($file, $line, $context = 2) {</span></code> [
3] => <span class="code-highlight"><code><span style="color: #000000"> $data = $lines = array();</span></code></span> [
4] => <code><span style="color: #000000"> $data = @explode("\n", file_get_contents($file));</span></code> )
?>
И хотя этот метод используется для внутренних целей, он может быть удобен, если вы создаете ваши собственные сообщения об ошибках или записи в журнале для пользовательских ситуаций.
Преобразует переменную любого типа в строку для вывода при отладке. Этот метод также используется большинством отладчиков для внутреннего преобразования переменных, и может быть использован в ваших собственных отладчиках.
Заменяет отладчик CakePHP новым обработчиком ошибок.
В CakePHP 1.2 появился новый отладочный класс, который предлагает больше свойств для получения отладочной информации. Он имеет несколько функций, которые вызываются статически, и помогают при выводе данных, записи в журнал событий и обработке ошибок.
Класс Debugger Class подменяет стандартную обработку ошибок PHP, заменяя ее более полезными отчетами об ошибках. Обработка ошибок из класса Debugger используется по умолчанию в CakePHP. Configure::debug должно быть присвоено значение больше 0.
Когда возникает ошибка, Debugger выводит информацию на страницу и делает запись в файл error.log. Сгенерированный отчет об ошибке, содержит стек трассировки и фрагмент кода, где возникла ошибка. Перейдите по ссылке Error для открытия стека трассировки, и по ссылке Code – для просмотра строк кода, где возникла ошибка.