7 – Debug e Erros
Só existe uma maneira de evitar críticas: não fazer nada, não dizer nada e não ser nada.
Aristóteles
Debug/Depuração
Depuração é uma etapa inevitável e importante de qualquer ciclo de desenvolvimento. Ainda que o CakePHP não forneça nenhuma ferramenta que se conecte com qualquer IDE ou editor de texto, este oferece várias ferramentas que auxiliam na depuração e exibição de tudo que está sendo executado "por baixo dos panos" na sua aplicação.
Depuração Básica
Você pode usar as funções pr() ou debug() caso queira verificar erros em código ou apenas verificá-los.
debug(mixed $var, boolean $showHtml = null, $showFrom = true)
A função debug() é uma função de escopo global que funciona de maneira similar a função do PHP, print_r(). A função debug() exibe os conteúdos de uma variável de diversas maneiras. Primeiramente, se você deseja exibir os dados no formato HTML, defina o segundo parâmetro como true. A função também exibe a linha e o arquivo de onde a mesma foi chamada.
A saída da função somente é exibida caso a variável $debug do core esteja definida com o valor true.
debug($query) Mostra o SQL e os parâmetros incluídos, não mostra resultados.
debug($query->all()) Mostra a propriedade ResultSet retornado pelo ORM.
debug($query->toArray()) Um caminho mais fácil para mostrar todos os resultados.
debug(json_encode($query, JSON_PRETTY_PRINT)) Exemplo em JSON.
debug($query->first()) Primeiro resultado obtido na query.
debug((string)$query->first()) Mostra as propriedades de uma única entidade em JSON.
Tente isto na camada Controller: debug( $this->{EntidadeNome}->find()->all() );
Tratando erros
Cada SGBD tem seus próprios códigos de erro que podem ser capturados pelo PDO.
Dicas sobre erros no PDO no Cake
Criar o arquivo src/Template/Error/pdo_error.ctp, contendo
<?php
use Cake\Utility\Debugger;
?>
<h2>Erro no Cadastro</h2>
<p class="error">
<strong>Erro: Grupo não existe na tabela estrangeira<br></strong>
<?php
if($error->getCode() == 23503){
print "Este grupo não existe na tabela estrangeira.<br>Caso tenha realmente digitado de forma correta<br>e queira adicionar cadastre-o na tabela estrangeira<br>primeiro e depois cadastre o material com ele!";
}
//print $message;
?>
</p>
Tratamento de erro é uma missão nobre em aplicativos.
Aplicativos onde o programador prevê erros em todas as situações onde ele imagina que pode haver erro são aplicativos mais robustos. Os softwares de teste como o PHPUnit tem a missão de ajudar com isso.
Detalhes
https://book.cakephp.org/3.0/en/development/debugging.html
Comments fornecido por CComment