Skip to content

Caçando erros de sintaxe em sistemas PHP

Como o PHP não é uma linguagem compilada, grande parte dos bugs de um sistema só são percebidos (e corrigidos) em ambiente de produção. Isso acontece principalmente se você mantém um sistema grande, pois se torna difícil validar todos os arquivos que são enviados para ambiente produção em cada nova release.

Porém, usando o PHP CLI (Command Line Interface) você consegue validar a sintaxe de um sistema inteiro de uma forma simples, fácil e rápida. Se você ainda não tem o PHP CLI instalado, você pode instalá-lo no Ubuntu (ou Debian) da seguinte forma:


$ sudo aptitude install php5-cli

Pronto, agora você tem acesso ao PHP via linha de comando:


$ php -r 'echo "Hello World!";'
Hello World!

Aproveite também dar uma olhada em todas as opções do PHP CLI porque ele tem bastante coisa legal e que podem ser muito úteis em vários casos. Uma dessas opções é o validador de sintaxe, ou seja, a opção -l.

Veja o exemplo de um arquivo sem problemas de sintaxe:


$ nl helloworld.php
     1  <?php
     2  echo 'Hello ';
     3  echo 'World!';
     4  ?>
$ php -l helloworld.php
No syntax errors detected in helloworld.php

E agora o mesmo arquivo com erros de sintaxe


$ nl helloworld.php
     1  <?php
     2  echo 'Hello '   // erro de sintaxe, faltando um ";" aqui
     3  echo 'World!';
     4  ?>
$ php -l helloworld.php

Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in helloworld.php on line 3
Errors parsing helloworld.php

Agora você pode usar um pouco de bash junto com essa opção de checagem de sintaxe para validar todo o seu sistema PHP de uma só vez, como mostrado a seguir


$ find /var/www/meu-site -name *.php -exec php5 -l {} ";"

Claro que isso não garante que não hajam erros de lógica no seu sistema, mas encontrar e corrigir todos os erros de sintaxe antes de enviar o código para o cliente já um grande passo. É possível ainda criar um script muito mais elaborado do que o comando mostado acima, mas a idéia desse post era só mostrar o conceito mesmo.

É isso ae, abraços.

2 Comments

  1. Muito bom, mas uma outra forma de garantir isso é manter uma suite de testes unitarios, que além de validar a sintaxe, validam também a lógica do seu sistema.

    Posted on 07-Jun-08 at 8:45 pm | Permalink
  2. Tiago Albineli Motta
    Claro, com certeza! Digamos que esse seja o “lazzy way” de encontrar erros mais a vista. :)

    Posted on 07-Jun-08 at 8:51 pm | Permalink

One Trackback/Pingback

  1. Arthur via Rec6 on 06-Jun-08 at 1:38 am

    Caçando erros de sintaxe em sistemas PHP…

    Um exemplo de como validar a sintaxe de um sistema PHP inteiro de uma forma simples, fácil e rápida….

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*