Depuração
O Inphinit inclui diversos recursos para depuração, com acesso rápido a editores de código e assistentes externos (IA ou mecanismos de busca).
Modo de desenvolvimento
No modo de desenvolvimento, em vez de uma instância de Inphinit\App na variável $app, você terá uma instância de Inphinit\Debug\App. Essa instância faz exatamente a mesma coisa que Inphinit\App, mas também valida todos os valores em todos os métodos da classe, lançando exceções se algum valor for inesperado. Se o modo de desenvolvimento estiver desativado, nenhum dos métodos realizará validações ou lançará erros, o que permitirá um desempenho muito melhor quando o modo de desenvolvimento estiver desativado. Por outro lado, se estiver ativado, permitirá que você desenvolva sem cometer tantos erros.
Erros de depuração
No modo de desenvolvimento, todos os erros, avisos e exceções podem ser exibidos diretamente no navegador, mostrando o conteúdo do script e da linha problemática (arquivos HTML e XML problemáticos carregados por uma Inphinit\Dom\Document instância também serão exibidos; mais detalhes sobre erros DOM).
Você precisa executar o método $debug->setErrorView($view) no arquivo system/dev.php e é possível personalizar a View . Por padrão, a View já está definida como 'debug.error' (a partir de system/views/debug/error.php):
// Inject CSS for debug if necessary
$debug->setBeforeView('debug.style');
// Display errors
$debug->setErrorView('debug.error');
Os erros serão exibidos de forma semelhante a esta:
Depurando rotas
No modo de desenvolvimento, todas as rotas criadas serão validadas. No método action($methods, $path, $callback), os métodos HTTP serão validados, permitindo apenas os métodos ANY, DELETE, GET, HEAD, OPTIONS, PATCH, POST e PUT.
Caso sejam passados métodos duplicados em um array, como $app->action(['GET', 'GET'], '/foo', ...), uma exceção também será lançada.
Outras validações:
- Padrões duplicados
- Padrões inválidos
- Controladores inválidos
- Visibilidade incorreta do método nos controladores
- Callbacks não chamáveis
- Namespaces de prefixo inválidos definidos usando
setNamespace($prefix)o método - Caminhos de prefixo inválidos definidos usando
setPath($prefix)o método
Integração de assistentes online
Você também pode especificar uma URL personalizada contendo o marcador de posição {error}, que será substituído pela system/Configs/debug.php chave de alteração da mensagem de erro real:
'assistant' => 'https://duckduckgo.com/?q={error}',
Ou você também pode usar um dos valores de atalho para assistentes populares ou mecanismos de busca:
| Valor | Descrição |
|---|---|
'assistant' => 'chatgpt' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para o OpenAI ChatGPT. |
'assistant' => 'claude' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para o Anthropic Claude. |
'assistant' => 'duck.ai' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para o DuckDuckGo AI Chat. |
'assistant' => 'duckduckgo' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para a pesquisa do DuckDuckGo. |
'assistant' => 'google' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para a Busca do Google. |
'assistant' => 'google.ai' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para o Google AI/Gemini. |
'assistant' => 'perplexity' |
No ambiente de desenvolvimento, as mensagens de erro gerarão links para o Perplexity AI. |
'assistant' => 'https://foo.bar?q={error}' |
Utilizando essa ferramenta, {error} você pode montar qualquer URL que desejar, personalizando assim o assistente ou mecanismo de busca que preferir. |
Integrando o editor de texto
Alguns editores de código, como o Visual Studio Code, podem se integrar com navegadores da web por meio de links. Como resultado, quando você está no modo de desenvolvimento, erros, exceções e até mesmo avisos menores exibidos no navegador podem incluir links que levam você diretamente ao arquivo e à linha correspondentes no seu editor. Por padrão, novos projetos geram links para o VS Code. Esse comportamento pode ser alterado editando o system/configs/debug.php arquivo e atualizando a seguinte chave:
'editor' => 'vscode',
Texto Sublime
Para integrar com o SubliteText, altere a chave para:
'editor' => 'sublimetext',
Outros editores
Outros editores podem ter links com formatos diferentes, portanto em vez de um valor simples, é possível criar seu próprio link, usando {path} and {line} como referência. Exemplo:
'editor' => 'foo://bar/baz?path={path}&line={line}',
Exibe métodos, constantes e classes definidos.
No modo de desenvolvimento, é possível habilitar um recurso para exibir, para cada requisição, as classes, funções e constantes que foram carregadas por meio de carregamento automático ou execução padrão. Isso facilita a depuração e ajuda a identificar execuções desnecessárias. Adicione a seguinte linha ao seu system/dev.php arquivo:
$debug->setDefinedView('debug.defined');
Exibe o desempenho
No modo de desenvolvimento, é possível ativar um recurso para exibir, para cada solicitação, o consumo de memória e o tempo de processamento. Essas informações são úteis para encontrar maneiras de otimizar o projeto. Adicione a seguinte linha ao seu system/dev.php arquivo:
$debug->setPerformanceView('debug.performance');