Первые шаги: debug class
Декабрь 14, 2007
Самое важно в системе — ее работа.Очень сложно оценить спопосбности оной, не имея представления, чтоже она делает...
Эту проблему можно решить протоколированием. В принципе, делается не очень сложно, но необходимо предусмотреть вещи, которые пока нам не нужны, одновременно не убивая быстродействие.
Решать задачку начинаем прямо сейчас.
Поскольку, я приверженец полнофункционального ООП-подхода программирования в php — будем играть по этим правилам.
Рассмотрим функционал дебаг-подсистемы.
Система должна уметь разделять входящую информацию на уровни важности. Я использую для этого массивы. Вы можете использовать множество переменных. Однако, при таком подходе готовьтесь к необходимости лезть в код при задаче «расширения уровней».
Система должна добавлять сообщения в массив. Должна их выводить оттуда и протоколировать.
Далее приведу класс целиком, дабы не мучать Вас своими размышлениями по данному поводу
debug_arr = array();
$this->output = NULL;
}
function add_err($msg, $err_level=USER)
{ $this->debug_arr[$err_level][] = $msg;
}
public function display_err($errs_level=ALL)
{ $output = '
- ';
foreach ($this->debug_arr as $err_level=>$error)
{ foreach ($error as $message)
{ $output.= ($errs_level ==ALL)?
'
- '.$err_level.': '.$message.' ': (($err_level==$errs_level)?'
- '.$message.' ':'' ); } } $output .= '
Использование — простое. Запускаете конструктор и делаете вот так
$this->debug = $_SESSION['obj']['debug'];
$this->db_host = (defined('DB_HOST'))?
DB_HOST:$this->debug->add_err(ERR_DBHOST_NOT_DEFINED.ERR_CHECK_CONFIG,CRITICAL);
например...
Прошу прощения за такое отображение кода — надо поискать расширение, чтоли, чтобы корректно отображалось...
Март 9, 2008 в 12:47
Спасибо.
Это все очень интересно. Жду дальнейших публикаций.