Pplware

PHP é à quinta-feira – Um debug mais prático

Hoje apresento-vos uma função que uso para fazer debugs, obviamente um pouco alterada porque, como muitas outras funções que aqui mostro, está integrada numa classe.

Por omissão, ela só é activada definindo a constante _DEBUG_ para 1, mas também é possível fazer uma simples adaptação para funcionar por “níveis”, ou seja, o output do debug seria diferente para _DEBUG_ 1, 2, 3, etc., funcionando quase como que por importância.

Fica como exercício para esta semana proporem essa adaptação 😉


function debug($var,$title='') {
 # Output da variável
 if (defined(_DEBUG_) && _DEBUG_ == 1) {
 # Se for array ou objecto, o output é feito com o título que foi atribuído antes e só depois a formatação.
 if (is_array($var) || is_object($var)) {
 # Imprime o título se este foi definido, de forma visível, ou seja, forçando fundo branco e texto preto.
 if (!empty($title)) echo '<h3 style="font-family: Arial; font-size: 13px; text-align: center; font-weight: bold; color: #000000; background: #FFFFFF; display: block;">»»»»»»»»»»»» '.$title.' ««««««««««««</h3>';

# Imprime o início do pre, de forma visível, ou seja, forçando fundo branco e texto preto.
 echo '<pre style="font-family: Arial; font-size: 11px; text-align: left; color: #000000; background: #FFFFFF; display: block;">';

# Imprime o array ou objecto
 print_r($var);

# Fecha a tag
 echo '</pre>';
 }
 # É um texto, inteiro, etc, como tal, mostramos só numa linha
 else {
 # Mostramos de forma visível a variável, precedida pelo título caso este tenha sido definido.
 echo '<h3 style="font-family: Arial; font-size: 13px; text-align: center; font-weight: bold; color: #000000; background: #FFFFFF; display: block;">»»»»»»»»»»»» '.(!empty($title)?$title.' --- ':'').$var.' ««««««««««««</h3>';
 }
 }
 }
 ?>

Modo de utilização:

Como sempre, é bastante simples e intuitivo, segue um exemplo de como fazer output de um array com o título “array definido”.

<?php
 define('_DEBUG_',1);
 $array = array(array(1,2,3),2,3);
 debug($array,'array definido');
 ?>

Como sempre, é bastante simples e prático, sendo que serve apenas para simplificar o trabalho de quando uma pessoa quer fazer debug tem de fazer um echo, depois tem de adicionar um <br> para ser perceptível, depois um <pre> no caso de um array ou objecto, depois se o fundo for branco não se lê, etc. etc. 🙂

PERGUNTA: Para além da sugestão que dei em cima (antes da função e do exemplo), sabem-me dizer qual o output deste código que coloquei como exemplo de utilização?

Qualquer dúvida ou sugestão, estão completamente à vontade.

Exit mobile version