Рассмотрим простой сеанс отладки с помощью отладчика Zend IDE (рис. 6.5):
Мы сейчас пробуем отладить версию нашей прежней реализации стека, содержащей ошибку. Перейдем в Tools | Customization | Debug и введем имя хоста и номер порта для сервера отладки, на котором выполняется сценарий. Открыв сценарий через меню File, можно устанавливать в его коде контрольные точки с помощью двойного щелчка по строке или щелчка по значку контрольной точки в верхней панели инструментов Desktop. При щелчке по значку Run сценарий начинает выполняться до достижения контрольной точки. При нахождении курсора над переменной во всплывающем окне отображается ее значение.
Можно также устанавливать «контрольные выражения» (watch expressions), перейдя на вкладку Watches в правой нижней панели и щелкнув правой кнопкой мыши. Контрольное выражение останавливает программу, когда значением конкретного выражения становится «истина», например, когда некоторая переменная принимает значение 10. С помощью вкладок Breakpoints и Variables этой панели можно изучить действующие контрольные точки, а также значения внутренних переменных и переменных окружения (рис. 6.6):
Код HTML, выводимый этим сценарием, показан в правой панели.
Еще один основанный на IDE отладчик называется конструктором Nexidion и находится на Он требует для своей работы Linux
с KDE, а также Debug Monitor (имеющегося на том же сайте). На том же вебсайте есть еще один инструмент для профилирования кода.
Тестирование сценариев
Тестирование сценариев, часто недооцененное, на самом деле является лучшей гарантией от коварных ошибок, прячущихся в коде. Хороший план тестирования позволяет вскрыть ошибки на ранней стадии написания программы, а хороший набор для тестирования поможет сконцентрировать внимание на разработке приложения.
PhpUnit - один из инструментов, позволяющих строить автоматизированную систему тестов для сценариев. Пакет можно загрузить по адресу http:// sourceforge.net/projects/phpunit/.
Воспользуемся нашим примером реализации стека для создания контрольного примера. Сначала надо создать класс тестера для нашего класса
Создадим его с именем StackTester в StackTester. php.
Необходимо включить файл, содержащий класс, который мы хотим проверить, а также файл сценария phpunit. php:
<?php
//Stack_Tester,php
Класс тестера должен быть подклассом класса TestCase, предоставляемого PhpUnit:
require("./Stack2.php"); require(". /phpunit/phpunit.php");