corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Depurando o código-fonte do PHP no NetBeans IDE

Conteúdo

O conteúdo desta página se aplica ao IDE NetBeans 6.5

Para seguir este tutorial, você precisa dos seguintes recursos e softwares.

Software ou recurso Versão necessária
NetBeans IDE Pacote de download do PHP 6.5
Um mecanismo PHP Versão 5
Um servidor Web É recomendado o Apache HTTP Server 2.2.
Um depurador PHP XDebug 2.0 ou posterior

Preparação

Para depurar com êxito aplicativos PHP no NetBeans IDE para PHP, você precisa ter o mecanismo do PHP, o servidor local Apache e o depurador XDebug instalados e configurados para desenvolvimento do PHP.

Habilitando o XDebug

Depois que o XDebug for instalado, você precisa habilitá-lo no mecanismo PHP.

Para habilitar o XDebug:
  1. Localize o arquivo php.ini usado pelo seu mecanismo PHP. Se você executar o phpinfo(), ele será mostrado na primeira tabela, no título Arquivo de configuração carregado.
  2. Remova os comentários ou adicione as seguintes linhas ao php.ini carregado:
  3. zend_extension_ts="<path to the php folder>/php_xdebug-2.0.2-5.2.5.dll"
    xdebug.remote_enable=1
    xdebug.remote_host=127.0.0.1
    xdebug.remote_port=9000
    xdebug.remote_handler=dbgp
    Clique aqui para obter mais informações sobre como configurar o XDebug.
    Observação: certifique-se de que os caminhos especificados coincidam com o local dos arquivos correspondentes conforme determinado durante a instalação

  4. Se você estiver usando um pacote XAMPP, precisará desabilitar o otimizador Zend porque ele bloqueia o XDebug. Localize as linhas relevantes e remova-as ou marque como comentários.

  5. Observação: se você estiver usando o XAMPP Lite, precisará fazer as alterações acima em dois arquivos php.ini:
    • /xampplite/php/php.ini
    • /xampplite/apache/bin/php.in

Como a depuração do PHP com o XDebug funciona

Quando o XDebug está habilitado no arquivo php.ini, o XDebug pode pausar e reiniciar a execução do programa PHP a qualquer momento. Quando a execução do programa é pausada, o XDebug pode recuperar informações sobre o estado atual do programa, como ler os valores das variáveis do programa. Praticamente, isso significa o seguinte fluxo de trabalho:

  • O usuário define um ponto de interrupção na linha onde a execução do código-fonte do PHP deve ser pausada.
  • Quando essa linha é alcançada, o usuário executa o script uma linha após a outra pressionando os botões F7 e F8 e verifica os valores das variáveis.

As janelas do depurador

Quando você inicia uma sessão de depuração, um conjunto de janelas do depurador é aberto abaixo da janela principal do editor. Para adicionar uma nova janela, escolha Janela > Depuração. As seguintes janelas estão disponíveis:

  • Variáveis locais mostra uma lista de variáveis inicializadas, seus tipos e valores.
  • Inspeções mostra uma lista de expressões definidas pelo usuário com seus valores.
  • Pilha de chamadas mostra uma lista das funções chamadas na ordem inversa. A função chamada por último fica na parte superior da lista.
  • Pontos de interrupção mostra uma lista dos arquivos e números das linhas onde os pontos de interrupção estão definidos.
  • Sessões mostra uma lista das sessões de depuração ativas atualmente.
  • Segmentos
  • Fontes
  • Monitor HTTP no lado do cliente

Sessão de depuração

O seguinte procedimento é o fluxo de trabalho de uma típica sessão de depuração.

Para executar uma sessão de depuração:
  1. Inicie o IDE, execute o projeto e abra o arquivo que contém o código-fonte que você deseja depurar.
  2. Coloque o cursor na linha até a qual você deseja que o script do PHP seja executado automaticamente.
  3. Para definir um ponto de interrupção, pressione Ctrl-F8 ou escolha Depurar > Alternar ponto de interrupção de linha.
  4. Na janela Projetos, navegue para o nó do projeto atual, clique com o botão direito do mouse e escolha Depurar do menu pop-up. O IDE abrirá as janelas do Depurador e executará o projeto até que o ponto de interrupção seja atingido.
    Observação: se o projeto atual for definido como Principal, você poderá escolher Depurar  > Depurar projeto principal ou pressionar Ctrl-F5, ou clicar no botão Depurar projeto principal.
  5. Alterne para a janela Variáveis locais. A janela mostra todas as variáveis que foram inicializadas na função atual, seus tipos e valores.
  6. Para exibir o valor de uma variável fora da função, coloque o cursor em uma ocorrência da variável. A dica de ferramenta mostra o valor da variável.
  7. Para executar o programa linha a linha, incluindo as linhas em todas as funções chamadas, pressione F7 ou escolha Depurar > Passar por dentro e observe as alterações nos valores das variáveis na janela Variáveis locais.
  8. Para verificar a lógica do programa observando as alterações das expressões, defina uma nova inspeção:
    1. Para abrir a janela Inspeções, escolha Janela > Depuração > ou pressione Ctrl-Shift-2. A janela Inspeções se abre.
    2. Em qualquer lugar na janela Inspeções, clique com o botão direito do mouse e escolha Nova inspeção do menu pop-up. A janela Nova inspeção é aberta.
    3. Insira a expressão da inspeção e clique em OK.
    4. Agora você pode fazer uma verificação adicional durante a depuração.
  9. Para cancelar a execução linha a linha do código em uma função e passar para a próxima linha depois da chamada da função, pressione Ctrl-F7 ou escolha Depurar > Passar por fora.
  10. Para ignorar a execução linha a linha do código em uma função, obtenha o valor retornado pela função e passe para a próxima linha depois da chamada da função, pressione F8 ou escolha Depurar > Passar por cima.
  11. Para pausar a sessão de depuração, escolha Depurar > Pausar.
  12. Para continuar a sessão de depuração, escolha Depurar > Continuar ou pressione o botão Continuar a sessão de depuração.
  13. Para cancelar a sessão de depuração, pressione o botão Cancelar a sessão de depuração.
  14. Quando o programa chegar ao fim, as janelas do depurador serão fechadas.

Sessão de depuração de exemplo

A seção ilustra uma sessão de depuração padrão.
  1. Crie um novo projeto PHP com os seguintes parâmetros:
    • Tipo de projeto - Aplicativo PHP
    • Local dos códigos-fonte - o local padrão da pasta htdocs
    • Configuração de execução - Site local
    Encontre mais detalhes sobre como definir um projeto PHP no documento Configurando um projeto PHP.
  2. Depois que a criação do projeto estiver concluída, posicione o cursor no nó Arquivos de código-fonte, escolha Propriedades do menu pop-up e abra a janela Depurar. Marque a caixa de verificação Depurar PHP no lado do servidor.
  3. Para permitir o uso de teclas de acesso durante a sessão, posicione o cursor no nó do projeto e escolha Definir como projeto principal no menu pop-up.
  4. No arquivo index.php, indique o seguinte código:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      	<head>
      		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      			<title>NetBeans PHP debugging sample</title>
    		</head>
    <body>
    	<?php
      	$m=5;
      	$n=10;
      	  $sum_of_factorials = calculate_sum_of_factorials ($m, $n);
      	  echo "The sum of factorials of the entered integers is " . $sum_of_factorials;
      	
    	    function calculate_sum_of_factorials ($argument1, $argument2) {
      	 	$factorial1 = calculate_factorial ($argument1);
      	 	$factorial2 = calculate_factorial ($argument2);
      	 	$result = calculate_sum ($factorial1, $factorial2);
      	 	return $result;
      		}
    	
    	  function calculate_factorial ($argument) {
      	  	$factorial_result = 1;
      	 	for ($i=1; $i<=$argument; $i++) {
      	 		$factorial_result = $factorial_result*$i;
      	 	}
      			return $factorial_result;
      		}
    	  
    	    function calculate_sum ($argument1, $argument2) {
     			return $argument1 + $argument2;
         	}	
    ?>
      </body></html>
      
    O código contém três funções:
    • A função calculate_factorial ()
    • A função calcualte_sum ()
    • A função calculate_sum_of_factorials () que chama a função calculate_factorial duas vezes, depois chama a função calcualte_sum () uma vez e retorna a soma calculada dos fatoriais.
  5. Defina um ponto de interrupção (Ctrl-F8) no começo do bloco PHP:
    <?php
  6. Para iniciar a depuração, clique no botão Depurar projeto principal. O depurador pára no ponto de interrupção.
  7. Pressione F7 três vezes. O depurador pára na linha onde a função calculate_sum_of_factorials () é chamada. A janela Variáveis locais mostra as variáveis $m e $n com seus valores:
    Depurador parado na chamada de função
  8. Para passar dentro da função calculate_sum_of_factorials(), pressione F7. O depurador começa a executar o código na função calculate_sum_of_factorials () e pára na chamada da função calculate_factorial().
    O depurador parou na chamada da função incorporada calculate_factorial().
    A janela Variáveis locais agora mostra as variáveis locais $argument1 e $argument2 declaradas na função calculate_sum_of_factorials ().
    A janela Variáveis locais mostra as variáveis da função atual antes da chamada de uma função incorporada
  9. Pressione F7. O depurador começa a executar o código com a função calculate_factorial(). A janela Pilha de chamadas mostra a pilha de chamadas para as funções na ordem inversa com a última função chamada na parte superior da lista:
    A janela Pilha de chamadas com três chamadas de função listadas na ordem inversa.
  10. Pressione F7 para passar pelo loop. Visualize os valores das variáveis na janela Variáveis locais.
    A janela Variáveis locais com as variáveis. Verificando se o loop está correto.
  11. Quando você se certificar de que o código está funcionando corretamente, pressione Ctrl-F7 para cancelar a execução da função. O programa retorna para a linha após a chamada da função calculate_factorial().
    Observação: como alternativa, você pode pressionar F7 até que o programa conclua a execução da função calculate_factorial(). Você também retornará para a linha após essa chamada.
    O depurador parou na segunda chamada da função incorporada calculate_factorial().
  12. Como você acabou de verificar a função calculate_factorial() e sabe que ela está funcionando corretamente, pode pular sua execução ("passar por cima"). Para passar por cima, pressione F8. O programa pára na chamada da função calculate_sum().
    O depurador parou na chamada da função incorporada calculate_sum().
  13. Para passar dentro da função calculate_sum(), pressione F7.
  14. Para passar por cima, pressione F8. Em qualquer caso, o depurador pára na última linha na função calculate_sum_of_factorials().
    O depurador parou na instrução $result de retorno na função calculate_sum_of_factorials().
  15. Pressione F7. O depurador move para a linha com a instrução echo.
  16. Pressione F7 até que o depurador encerre o programa. A janela do navegador abre e mostra o resultado da execução do programa:
    Resultado da execução do programa na janela do navegador.

Usando inspeções adicionais

Você pode definir uma expressão de inspeção adicional para acompanhar a execução do programa. Isso pode ajudá-lo a pegar um erro.
  1. Atualize o código da seguinte maneira (substitua um mais por um menos):
    function calculate_sum ($argument1, $argument2) {
     			return $argument1 - argument2;
         	}
     
    Imagine que isso tenha resultado de um erro de digitação, mas você na verdade precisa calcular a soma.
  2. Escolha Depurar > Nova inspeção ou pressione Ctrl-shift-F6. A janela Nova inspeção é aberta.
  3. Insira a seguinte expressão e clique em OK.
    $factorial1+$factorial2
    A nova expressão aparece na janela Inspeções.
  4. Execute a sessão de depuração. Quando o depurador parar na linha
    return $result;
    compare o valor da expressão na janela Inspeções e o valor de $result na janela Variáveis locais. Eles devem ser iguais, mas estão diferentes.
    Detectando erros usando inspeções
Este exemplo é muito simples e deve dar uma noção geral do uso de inspeções.

Casos de PHP e HTML mistos

Você pode depurar código que contenha blocos de PHP e HTML. No exemplo da seção Sessão de depuração de exemplo, os valores são codificados. Expanda o código com um formulário de entrada de HTML para inserir valores.
  1. Adicione o seguinte código HTML acima do bloco <?php ?>:
     <form action="index.php" method="POST">
           Enter the first integer, please:
    <input type="text" name="first_integer"/><br/>
    Enter the second integer, please:
    <input type="text" name="second_integer"/><br/>
    <input type="submit" name="enter" value="Enter"/>
    </form>

    Encontre mais informações sobre formulários de entrada de HTML.

  2. Substitua as seguintes linhas na parte superior do bloco <?php ?>:
    $m=5;
      	$n=10;
      	  $sum_of_factorials = calculate_sum_of_factorials ($m, $n);
      	  echo "The sum of factorials of the entered integers is " . $sum_of_factorials;
    
    pelo seguinte código:
    if (array_key_exists ("first_integer", $_POST) &&
    array_key_exists ("second_integer", $_POST)) { $result = calculate_sum_of_factorials ($_POST["first_integer"], $_POST["second_integer"]);
    echo "Sum of factorials is " . $sum_of_factorials;
    }
  3. Defina um ponto de interrupção no início do bloco <?php ?> e inicie a sessão de depuração.
  4. Pressione F7. O depurador passa dentro do programa. A janela do navegador é aberta mas o formulário de entrada não é exibido. Este é o comportamento correto do depurador porque ele tem que passar através de todo o código-fonte de uma página da web antes que a página possa ser exibida. Praticamente, isso significa que o depurador passa através do código duas vezes. Na primeira vez, o depurador processa o código para exibir o formulário de entrada de HTML. Na segunda vez, o depurador executa o código PHP etapa por etapa.
  5. Pressione F7 até que o depurador alcance o final do programa e o formulário de entrada seja aberto.
  6. Preencha o formulário e clique em Enter. A sessão de depuração continua conforme descrito na seção Sessão de depuração de exemplo.


Para enviar comentários e sugestões, obter suporte e manter-se informado sobre os desenvolvimentos mais recentes dos recursos de desenvolvimento em PHP no NetBeans IDE, junte-se à lista de usuários .

Voltar à trilha do aprendizado PHP