Первые шаги: 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 .= '
'; echo $output; $this->output = $output; unset($output); } function start_time() { $tmp_arr = array(); $tmp_arr = explode(' ',microtime()); $this->start_time = $tmp_arr[0]+$tmp_arr[1]; unset($tmp_arr); } function stop_time() { $tmp_arr = array(); $tmp_arr = explode(' ', microtime()); $this->stop_time = $tmp_arr[0]+$tmp_arr[1]; } function get_exec_time() { echo $this->stop_time - $this->start_time; } } ?>

Использование — простое. Запускаете конструктор и делаете вот так

$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);

например...

Прошу прощения за такое отображение кода — надо поискать расширение, чтоли, чтобы корректно отображалось...

1 комментарий на “Первые шаги: debug class”

  1. Koc высказал:

    Спасибо.

    Это все очень интересно. Жду дальнейших публикаций.