Debug


1Introdução

O Temma oferece um plugin dedicado à depuração. Ele permite coletar dados sobre a requisição em execução, e acessá-los por meio de uma barra exibida na parte inferior das páginas (quando a visão Smarty é usada).

A barra de depuração dá acesso aos seguintes dados:

  • Mensagens de log, para que você não precise abrir o arquivo log/temma.log.
  • Variáveis de sessão, variáveis GET, variáveis POST, cookies e variáveis de template.
  • Constantes: conteúdo da superglobal $_SERVER e variáveis de ambiente.
  • Configuração.
  • Telemetria, ou seja, a estrutura em árvore das chamadas de função e seus tempos de execução.

2Configuração

2.1Ativação

Para ativar o plugin, basta declará-lo como pré-plugin no arquivo de configuração etc/temma.php:

<?php

return [
    'plugins' => [
        '_pre' => [
             '\Temma\Plugins\Debug'
        ]
    ]
];

Atenção!

Este plugin deve ser ativado apenas em uma estação de desenvolvimento, e nunca em servidores de produção.

Por isso, recomendamos fortemente adicioná-lo apenas ao arquivo de configuração etc/temma.dev.php, em vez de adicioná-lo ao arquivo principal etc/temma.php. Isso garantirá que o plugin só seja ativado em máquinas onde a variável ENVIRONMENT tenha o valor dev (veja a documentação sobre configuração por plataforma).

Use a chave _pre__prepend para que o plugin seja o primeiro da lista.

Exemplo de arquivo etc/temma.dev.php:

<?php

return [
    'plugins' => [
        '_pre__prepend' => [
             '\Temma\Plugins\Debug'
        ]
    ]
];

Para sua informação, o plugin se registrará sozinho como pós-plugin. Mas você não deve adicioná-lo à configuração como pós-plugin, caso contrário ele será executado duas vezes, causando disfunções.


2.2Desativação de funcionalidades

Configurar o pré-plugin ativará todas as funções de depuração.
No entanto, é possível ativar ou desativar cada funcionalidade individualmente. Isso pode ser útil para economizar memória durante a execução da requisição. Para isso, é preciso definir a configuração estendida x-debug:

<?php

return [
    'x-debug' => [
        // para desativar a exibição da barra de depuração,
        // sem desativar a coleta de dados
        'showBar'       => false,
        // para desativar a coleta e exibição das mensagens de log
        'showLogs'      => false,
        // para desativar a exibição das variáveis
        'showVariables' => false,
        // para desativar a exibição das constantes ($_SERVER e ambiente)
        'showConstants' => false,
        // para desativar a exibição da configuração
        'showConfig'    => false,
        // para desativar a telemetria
        'showTelemetry' => false,
    ]
];

3Telemetria

A telemetria permite visualizar a estrutura em árvore das chamadas de função durante a execução da requisição, junto com o tempo de execução de cada função.

Esta ferramenta se baseia nas funções register_tick_function e debug_backtrace do PHP. Infelizmente, essas funções não conseguem garantir uma captura 100% precisa.
Portanto, a telemetria oferecida pelo Temma deve ser vista como uma ferramenta indicativa, mas não exaustiva.

Se você precisar de uma telemetria completa e precisa, pode recorrer a ferramentas como OpenTelemetry, Xdebug ou Blackfire.