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.