Para inicio de conversa, vamos ao básico: “cuspir informação na tela”. Nesse post serão mostrados com exemplos as principais “funções” que utilizo para a impressão de informação na tela, e qual delas podem ser úteis no debug.
Aos apressados, rápido exemplo de utilização.
<?php
echo "Olá Thiago";
echo 'Olá Thiago';
echo ("Olá Thiago");
echo "Olá ", "Thiago";
echo ("Olá", "Thiago");
print "Olá Thiago";
print ("Olá Thiago");
//a saída para os "echos" e os print serão
//Olá Thiago;
?>
O uso do echo tem um comportamento diferenciado e requer certa atenção. O echo não é uma função do PHP e sim um construtor da linguagem. Por conta dessa característica o echo dispensa o uso de parênteses. Logo é possível usá-lo passando uma string diretamente (linhas 3, 4 e 5). Para saber mais sobre os construtores da linguagem PHP de uma olhada nesse link.
A utilização do echo pode ser feita em qualquer parte do código em um arquivo PHP, não adianta que não vai funcionar em arquivos com a extensão diferente da .php a não ser é claro que estejam essas extensões configuradas para serem interpretadas pelo PHP.
<html>
<head>
<title><?php echo "Titulo da página";?></title>
</head>
<body>
<h1>Meu site em PHP</h1>
</body>
</html>
var_dump e print_r
Eu utilizo muito essas duas duas funções para debugar variáveis. Não as utilizo para um impressão de um conteúdo normal como eu fária com o echo ou print. Normalmente utilizo o var_dump para a impressão do conteúdo de variáveis quando eu preciso saber o tipo do valor (se é inteiro, string, float … ) e o print_r quando eu só preciso ver o analisar o conteúdo.
Exemplos com variáveis simples.
<?php
$nome = "Thiago";
$idade = 26;
// utilizando o print_r
print_r($nome);
print_r($idade);
/** a saída aqui será:
* Thiago
* 26
*/
// usando o var_dump
var_dump($nome);
var_dump($idade);
/**
* A saída aqui será
* string(6) "Thiago"
* int(26)
*/
?>
Exemplos com variáveis complexas.
<?php
$obj = new StdClass();
$obj->nome = "Thiago";
$obj->obj = new StdClass();
$obj->obj->idade = 26;
var_dump($obj);
/**
* a sua saída será:
* object(stdClass)#1 (2) {
* ["nome"]=>
* string(6) "Thiago"
* ["obj"]=>
* object(stdClass)#2 (1) {
* ["idade"]=>
* int(26)
* }
* }
**/
print_r($obj);
/**
* a sua saída será:
* stdClass Object
* (
* [nome] => Thiago
* [obj] => stdClass Object
* (
* [idade] => 26
* )
*
* )
*/
?>
Fica visível a diferença entre as duas chamadas. O var_dump é muito mais rico em detalhe que o print_r que em compensação é muito mais fácil de ler e entender. A utilização dos dois vai variar do seu objetivo ao “cuspir” o conteúdo de uma variável. Se o seu objetivo é ver o que tem dentro rápido pode usar o print_r se o objeto é ver exatamente o que tem e qual o tipo de dados armazenados na variável então a melhor opção é o var_dump.
Exercicios
Corrija os códigos abaixo:
Teste linha a linha numerando as com erro e sugerindo a correção na parte de comentário ai embaixo.
<?php
print ("Olá ", "Thiago");
echo "Thiago";
var_dump(echo "Thiago");
print_r("Thiago");
var_dump(26);
?>
Deixe um comentário