Ao depurar código PHP, pode ser útil examinar o estado do seu código em um momento específico. Isso pode ajudar você a entender o que está acontecendo no seu código e identificar quaisquer problemas que possam estar causando dificuldades.
Vamos analisar algumas maneiras de examinar o estado do seu código PHP usando funções internas do PHP.
Usando error_log() para registrar mensagens
Conforme discutido na lição sobre as opções integradas de depuração do WordPress, você pode usar a função error_log() para registrar mensagens no arquivo debug.log do WordPress.
Isso pode ser útil para fins de depuração, pois permite ver o que está acontecendo no seu código sem exibir essas informações na tela.
A função error_log() não é específica do WordPress; é uma função do PHP que você pode usar em qualquer código PHP para registrar mensagens no arquivo de log de erros do PHP configurado no servidor.
No entanto, depois que você habilita as opções específicas de depuração do WordPress no arquivo wp-config.php, qualquer conteúdo passado para error_log() será registrado no arquivo debug.log do WordPress.
error_log( $some_variable );
Isso registrará o valor de $some_variable no arquivo debug.log, para que você possa ver o que ele contém nesse ponto do seu código.
O benefício de usar error_log() é que ele permite registrar mensagens em um arquivo sem exibi-las na tela. Se você as exibir na tela, especialmente em um ambiente de produção, correrá o risco de expor informações confidenciais aos usuários.
Às vezes, também é mais rápido poder ver a saída em um arquivo de log, em vez de ter que procurar em uma longa lista de saída na tela.
Usando print_r()
Outra função útil para examinar o estado do seu código PHP é print_r(). Essa função exibe o valor de uma variável, matriz ou objeto em um formato legível, para que você possa ver o que ele contém.
Veja este exemplo de código PHP.
$some_array = array( 'apple', 'banana', 'cherry' );
print_r( $some_array );
Este código exibirá o seguinte na tela:
Array ( [0] => apple [1] => banana [2] => cherry )
Os desenvolvedores geralmente envolvem print_r() em tags <pre> para facilitar a leitura da saída.
echo '<pre>';
print_r( $some_array );
echo '</pre>';
Isso exibirá o seguinte na tela:
Array
(
[0] => apple
[1] => banana
[2] => cherry
)
Observe que, por padrão, print_r() exibe o valor da variável, mas não o retorna. Se quiser usar a saída de print_r() com error_log(), você precisará definir o segundo parâmetro como true.
error_log( print_r( $some_array, true ) );
Isso registrará a saída da chamada print_r no arquivo debug.log, para que você possa ver o que $some_array contém nesse ponto do seu código.
Usando var_dump()
A função var_dump() é outra função útil para examinar o estado do seu código PHP. Essa função exibe o valor de uma variável, matriz ou objeto em um formato legível, juntamente com informações adicionais sobre o tipo e o tamanho da variável.
Veja este exemplo de código PHP.
$some_array = array( 'apple', 'banana', 'cherry' );
echo '<pre>';
var_dump( $some_array );
echo '</pre>';
Este código exibirá o seguinte na tela:
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "cherry"
}
Observe que var_dump() exibe o valor da variável, juntamente com informações adicionais sobre o tipo e o tamanho da variável. Isso pode ser útil para fins de depuração, pois fornece informações mais detalhadas sobre a variável do que print_r().
Ao contrário de print_r(), var_dump() não tem uma opção para retornar a saída a uma variável, portanto, você não pode usá-lo diretamente com error_log().
No entanto, você pode usar algo chamado buffer de saída para capturar a saída de var_dump() e depois registrá-la no arquivo debug.log.
$some_array = array( 'apple', 'banana', 'cherry' );
ob_start();
var_dump( $some_array );
$output = ob_get_clean();
error_log( $output );
Os desenvolvedores geralmente usam esse tipo de código em uma função especial de registro, para poder usar var_dump e error_log juntos.
function log_var_dump( $variable ) {
ob_start();
var_dump( $variable );
$output = ob_get_clean();
error_log( $output );
}
Leitura complementar
Para obter mais informações sobre as funções mencionadas nesta lição, consulte as seguintes páginas na documentação do PHP: