Primeiras aulas do curso PHP Xdebug: Ferramenta de debug e profiling

PHP Xdebug: Ferramenta de debug e profiling

Começando com o Xdebug - Introdução

Olá, pessoal. Sejam muito bem-vindos à Alura. Meu nome é Vinícius Dias e eu vou guiar vocês nesse treinamento onde a gente vai aprender sobre depuração de código utilizado o Xdebug.

A gente vai começar esse treinamento falando sobre o que é depurar código, e como normalmente programadores PHP depuram os códigos, que é utilizando o Var_dump. Mas a gente já vai entender, logo no início, que utilizar Var_dump não é a forma mais profissional de fazer isso.

De qualquer forma, quando a gente utiliza o Xdebug, até a forma menos profissional, que é o Var_dump, fica mais interessante, e a gente consegue visualizar de forma bem mais interessante o Var_dump.

Inclusive quando a gente faz isso através do terminal. A gente vai ter uma saída mais colorida, mais bem formatada utilizando o terminal. Só que isso é só uma das vantagens, é só a primeira vantagem que a gente viu, e a gente falou bastante sobre o tratamento de erros.

O PhpStorm, além de exibir de forma bem mais intuitiva, de forma bem mais detalhada os erros, pode acabar mostrando para a gente erros quando alguém tenta esconder eles, enfim, a gente garante que vai conseguir visualizar os erros. A gente pode até fazer o nosso programa parar em determinados casos se o erro for mais grave do que um cenário que a gente prevê, enfim.

Bastante coisa nesse nessa parte de erros vão ser vista. E sobre configurações, tanto dos erros, sobre o que mostrar e o que não mostrar, quanto na parte do próprio Var_dump que, como eu falei, não é a melhor forma, mas ainda é muito utilizada, então o Xdebug deu um tapa bem legal nesse ponto.

A gente consegue limitar o tamanho de caracteres que exibiria de uma string, limitar profundidade de dados que a gente mostraria, ou seja, se mostraria as propriedades das propriedades de um objeto, se mostraríamos os arrays de arrays, e a gente consegue configurar bastante coisa.

A gente viu algumas configurações para serem exibidas, mas a gente aprendeu também que o Xdebug não serve só para deixar o Var_dump bonitinho. A gente viu bastante sobre profiling, ou seja, verificar, analisar os dados da aplicação de forma que a gente encontre gargalos de performance, ver qual parte do código está demorando mais tempo para ser executada.

Depois disso a gente entrou na parte de depuração propriamente dita, de forma mais profissional, adicionando breakpoints, fazendo código parar. E, no final, e o melhor de tudo, a gente fez com que um código no navegador fizesse a nossa ideia parar. Ou seja, aqui, o nosso está parando, esperando nossas ações para depurar o código.

Aqui eu consegui parar o navegador utilizando a minha ideia. Então eu poderia manipular, analisar os valores de cada uma das variáveis aqui, e depois eu posso continuar a execução, fazendo com que o navegador termine o que tem que fazer.

Então é bastante coisa que a gente vai ver nesse treinamento. Espero que você aproveite, espero que você goste. Caso, no decorrer desse treinamento você fique com alguma dúvida, não hesite em abrir uma dúvida no fórum. Eu tento respondê-las pessoalmente, mas eu nem sempre consigo. De qualquer forma, nossa comunidade é bastante solícita, e nossos alunos sempre tentam ajudar. Com certeza alguém já passou por um problema semelhante que o seu.

Mais uma vez, espero que você goste do treinamento, espero que tire proveito, e te vejo no próximo vídeo para a gente começar.

Começando com o Xdebug - Ambiente e versões

Olá, pessoal. Tudo bem? Eu queria dar uma passada bem rápida sobre as ferramentas que a gente vai utilizar, sobre o projeto que a gente vai trabalhar nesse curso.

Então, antes de qualquer coisa, eu vou deixar, já vou adiantar que eu estou utilizando aqui o PhpStorm, que é uma IDE completa para desenvolvimento com PHP, e nesse treinamento a gente vai utilizar alguns recursos do PhpStorm. Então eu recomendo bastante que você também baixe ele e trabalhe com o PhpStorm para seguir durante esse treinamento.

O que eu vou fazer também funciona em outros editores de texto mais simples, como, por exemplo, o Visual Studio Code, mais com o PhpStorm já vem pronto, já vem integrado, você não precisa de nenhuma extensão nem nada do tipo.

Então o primeiro ponto é utilizar o PhpStorm. Ele é gratuito para estudo, então só uma comprovação de que você está matriculado na Alura já serve para ter acesso a uma licença de um ano do PhpStorm. E a gente vai trabalhar nesse treinamento utilizando um projeto que a gente fez nos cursos de testes, nos cursos de testes utilizando PHP Unit.

Nesse projeto, é aquele projetinho que a gente trabalha com leilões, onde eu posso encerrar um leilão, buscar os leilões finalizados ou não, enfim. E a gente tem inclusive alguns testes para esse projeto.

Isso já vai pronto para você, e se você não está familiarizado com testes ainda, não tem problema. Recomendo, obviamente, que você faça os treinamentos sobre teste, mas não tem problema se você não estiver familiarizado.

Após baixar esse projeto inicial, você vai acessar o terminal na parte do projeto, e dessa parte do projeto você vai rodar “composer_install”. Obviamente, para rodar esse comando você precisa ter o PHP instalado e o Composer instalado.

Em treinamentos anteriores a gente já cobriu essa parte, então eu não vou voltar aqui, em como instalar o Composer e o PHP. Com esse comando, o Composer vai ler o seu arquivo de “composer.json”, e baixar a dependência do PHP Unit já na versão correta, na versão mais nova da 8. Ou seja, você já vai ter a versão necessária para continuar com esse treinamento.

Mais uma vez: se você não conhece o PHP Unit, não conhece testes, não tem problema. A gente não vai entrar em detalhes sobre testes, mas só para você saber, a gente vai... Rodei o “composer_install”, no meu projeto aqui já está instalado. Pode levar um pouquinho mais de tempo quando você executar. A gente vai rodar, algumas vezes, esse comando aqui. Mais uma vez: se você não fez os treinamento de testes ou de composer, talvez isso seja um pouco estranho essa pasta aqui, executar um comando, mas não se assuste, isso é só um arquivo em PHP que vai rodar alguns testes na nossa aplicação, mostrar minhas mensagens etc. E a partir desse projeto de testes, a gente vai começar a conversar sobre debugar código.

Então eu te espero no próximo vídeo para a gente começar a colocar a mão na massa e falar sobre depurar e debugar código.

Começando com o Xdebug - Conhecendo o var_dump

E aí, pessoal. Bem-vindos de volta. E eu queria executar aqui um código com vocês, que é o teste que garante que a busca por leiloes não finalizado está funcionando.

E nesse teste ele acessa um leilão down, ou seja, um objeto que busca, salva, faz o que tiver que fazer em questão de persistência utilizando leilões. Criou um leilão down, salva alguns leilões, e depois recupera os leilões não finalizados. E depois só garante que o leilão não finalizado é o correto, ele está buscando de forma correta.

Então, se eu executar o teste, qual é o comando para executar? Vou executar “vendor bin php unity”, que é aquele arquivo de executar os testes, só que eu vou filtrar para executar apenas esse teste aqui, que é o nome do método de teste que a gente quer executar.

Quando eu executo, a gente está recebendo uma falha aqui, a gente está em 3 asserts, em três verificações que ele fez, essa aqui falhou. Nessa verificação ele tentou achar variantes 0KM, mas na verdade, o leilão que ele achou foi para Fiat 147 0km. Então o nosso teste está falhando por algum motivo. E é muito comum a gente pegar um código que a gente acabou de escrever ou já escreveu há algum tempo que deveria funcionar e a gente não sabe o que está acontecendo.

Então a gente começa a tentar encontrar o bug, esse é o processo de depuração, ou de debug, que é para encontrar o problema e entender o que está acontecendo. Então, uma das ferramentas que o PHP fornece é uma função chamada “var_dump”. Esse “var_dump” entrega para a gente o conteúdo de uma variável e o seu tipo, e entrega, cospe na tela de uma forma que a gente consegue visualizar toda a estrutura.

Ele é um pouco mais interessante que o “Eco”, por exemplo, porque o “Eco” só exibe um dado com o seu valor. Então, por exemplo, a gente não consegue dar “Eco” num array, a gente não consegue exibir todos os valores do array utilizando o “Eco”. Então o “var_dump” ajuda nesse caso.

Então a gente vai começar a entender o que está acontecendo. Vamos ver o que está vindo aqui em “leilões”, qual conteúdo está vindo em “leilões”. Então eu posso utilizar “var_dump” e passo leilões por parâmetro. Isso vai fazer com que o conteúdo dessa variável “leilões” seja cuspida na tela.

Então, se eu executar aquele mesmo comando, eu tenho aqui toda a estrutura desse nosso array de leilões. E aqui, repara, que ele já mostra que é um array que contém um item. Beleza, tem um array de 1 item dos nossos leilões. Até aí parece tudo certo.

No índice 0 desse array eu tenho um objeto do tipo “leilão”. Ok, é o que a gente espera. Esse leilão não tem nenhum lance. Beleza, esse objeto está sendo definido dessa forma, e aqui a gente vê que a descrição é “Fiat 147”. Poxa, estranho. Não é esse que a gente está esperando. A gente está a variante, que foi o objeto que a gente montou, foi o objeto que a gente definiu aqui em “leilões” como a variante não finalizada.

E o Fiat 147, repara, a gente finalizou ele. E aqui, a propriedade “finalizado”, está vindo como verdadeiro. Então o nosso método buscar, recuperar não finalizados, está, na verdade, me devolvendo os leilões finalizados. Então a gente já entendeu aí que tem algum problema acontecendo.

Então a gente pode vir entendendo o que o método faz, então se eu acessar “recuperar não finalizados”, ele chama o outro método, “recuperar leilões”, se “finalizado =” a true, e isso deveria ser false. Agora, se eu executar, eu tenho um teste passando. Posso remover aquele var_dump se eu quiser, mas antes eu vou dar uma conferida aqui no que ele exibiu, e eu tenho a variante 0KM “finalizado = false”. Ótimo, exatamente o que a gente esperava.

Essa função var_dump é muito útil, e a gente usa bastante no dia a dia. não é a forma mais profissional de debugar, de depurar um código, e a gente vai conversar sobre formas mais profissionais e mais interessantes, mas é uma mão na roda e a gente usa bastante no dia a dia.

Só que isso na web, quando a gente está programando para uma página HTML, por exemplo, utilizar o var_dump pode ser um pouco mais difícil de visualizar. Então vou criar o arquivo aqui só para você entender como que ele ficaria. Eu vou criar um “var_dump.php”. Só um arquivo comum. E nesse arquivo eu vou fazer o require do nosso autoloader. “Vendor autoload”. E aqui eu vou criar um novo usuário. “Usuário = nenhum”. E aqui eu só passo o nome, que vai ser Vinícius Dias, o meu nome.

E aqui eu vou dar um “var_dump” nesse usuário. Só que agora imagina que isso tudo está numa página HTML. Criei uma página HTML aqui, e no PhpStorm é só digitar o sinal de exclamação e dar tab que ele já faz isso tudo para a gente. [05:04] Então eu vou trazer isso para cá, fechar aqui, e aqui eu abro o PHP, aqui eu fecho o PHP. Não é interessante a gente misturar código PHP com HTML, obviamente, mas eu só estou fazendo isso aqui para dar um exemplo de como fica o “var_dump” lá na web, numa página da web.

Beleza. Então eu tenho aqui, vou clicar com o botão direito, abrir no navegador, e eu vou abrir no meu navegador padrão, que aqui é o Chrome. Repara que ele mostra tudo numa linha só. Lá no terminal, cada propriedade estava numa linha, separado. Aqui o nosso usuário só tem uma propriedade, que é o nome, mas se fosse um leilão, por exemplo, teriam várias propriedades todas aqui na mesma linha.

Deixa eu criar um leilão para você entender melhor. “New Leilão”, e aqui “Fiat 147 0KM”. E agora, eu dando “var_dump” nesse leilão, olha só, fica muito difícil de visualizar. Então um truque, de novo, isso não é muito profissional, mas um truque para resolver esse problema de visualização é adicionar aqui no “var_dump”, o “var_dump” consegue mostrar o valor de várias variáveis. Eu não preciso passar uma só. Eu posso passar usuário 1, usuário 2. Eu poderia passar várias variáveis aqui separadas por vírgula.

Mas o que eu vou fazer é passar uma string. E essa tag, HTML, que eu estou passando aqui para o “var_dump” analisar, faz com que o código seja formatado exatamente como ele é jogado na tela para HTML. Se eu apertar “control+u”, que mostra o código-fonte, o PHP até gera cada propriedade numa linha. Só que o HTML não interpreta essa quebra de linha. Utilizando a tag “pré”, ele vai interpretar.

Então, se a gente olhar agora, a gente consegue visualizar um pouquinho melhor, um pouco mais parecido com que a gente tinha lá no terminal. Com isso a gente já entende como começar um processo de depuração, de investigar o que tem, qual o tipo de uma variável e todos os seus valores de um objeto, por exemplo. Mas como eu falei mais uma vez, isso ainda não está muito profissional. Então vamos começar a utilizar uma ferramenta bem, molhando o pezinho só nesse oceano que a gente vai ver sobre o Xdebug. Então no próximo vídeo a gente já vai fazer a instalação dele.

Sobre o curso PHP Xdebug: Ferramenta de debug e profiling

O curso PHP Xdebug: Ferramenta de debug e profiling possui 108 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda PHP acessando integralmente esse e outros cursos, comece hoje!

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas