PHP - manipulação de erros, depuração e código de escrita

Faça uma pergunta

Como mostrar erros do PHP

Antes de mais nada, quando você estiver desenvolvendo, ative a visualização dos erros PHP. Faça esta configuração no arquivo PHP.INI de seu servidor e/ou diretamente no código de suas páginas adicionando essas linhas:



error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

No arquivo PHP.INI, as instruções estão em um bloco como este:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
; error_reporting is a bit-field.  Or each number up to get desired error
; reporting level
; E_ALL             - All errors and warnings (doesn't include E_STRICT)
; E_ERROR           - fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_STRICT     - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
;
; Exemplos:
;
;   - Show all errors, except for notices and coding standards warnings
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices and coding standards warnings
;
error_reporting  =  E_ALL & ~E_NOTICE

Como ativar o debug (depuração)

Muitas vezes, um script não funciona como desejamos, mas não sabemos onde está o problema. Para encontrá-lo, o mais simples é adicionar, em seu código, uma pequena depuração. A maneira mais fácil é exibir o conteúdo das diferentes variáveis.
Para string, um simples code php>echo $montexte;</code> é suficiente. Ao lidar com um objeto ou matriz, a instrução
print_r($mavariable);
bastará. Claro que existem outras instruções, como o
var_dump
, mas você mesmo pode procurar.

Como escrever corretamente suas instruções PHP

Não há nenhuma obrigação real para escrever seu código. Há, no entanto, um padrão no qual você pode se basear: é o padrão PSR.

Como recuperar as recuperar as variáveis antes de usá-las

Ao usar qualquer variável (POST, GET, SESSION etc), o melhor é recuperar adequadamente antes do uso no resto do seu código. Para isso, certifique-se que elas existam -se afirmativo, guarde seu valor. Para isso, você deve usar as funções ISSET ou !EMPTY com a escrita ternária (a escrita ternária é uma espécie de if/else). Por exemplo:


//Se a variável $_POST['nom'] existe e não está vazia, recupere o valor. Se não, use a variável $nom em NULL
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;

NB: isset é usado para verificar se existe uma variável (IS SET). Já !empty verifica que a variável não está vazia e que é isset. Portanto, não é necessário usar o isset ao usar o !empty.

Como nomear suas variáveis

É claro que vamos atribuir nomes que correspondam a alguma coisa. Se você nomear uma variável
$prenomUser
, este é o nome de um usuário que esperamos encontrar, e não a sua data de nascimento.

Caso contrário, durante a revisão do código (você em 6 meses ou um de seu colega amanhã (ou me se você me perguntar) vai ser complicado de entender o código.

Como cortar seu código

Sobre os códigos, quanto menor, melhor. É melhor fazer 10 funções de 10 linhas de código ao invés de um bloco de 100 linhas ao mesmo tempo. O nível de manutenção e a leitura do código são bem melhores. Isso evitará códigos duplicados por nada. Se uma função faz mais de 20 linhas de código, devemos nos perguntar se não é possível cortá-lo em outras funções menores, Se não precisamos de função, pode-se de qualquer maneira centralizar os códigos redundantes nos arquivos que bastará incluir (via INCLUD /REQUIRE).

Onde colocar seu código PHP

Para facilitar a leitura do código e fazer a sua manutenção e seu debug, coloca-se, em geral, o máximo de código PHP antes do seu código HTML. Ele também evita abrir/fechar tags PHP em todas as direções.

Conectar seu código a um banco de dados MYSQL

Note que que as antigas instruções do MYSQL se tornaram obsoletas. Agora você precisa passar pelas extensões MYSQLI ou PDO. Veja aqui: PHP, a extensão MYSQL é obsoleta. Em seguida, leia Como se conectar a um banco de dados com DOP MYSQLI e PHP: gerenciar os erros.

Observação: para facilitar a manutenção do seu código e evite reescrever as instruções de conexão com o banco de dados em cada uma das suas páginas, você deve colocar seu código de conexão no banco de dados em um arquivo separado (nomeado por exemplo
cnxbdd.php
) e incluí-lo em suas páginas através de um require
 require_once "cnxbdd.php"; 
.

O que fazer se houver problema com a consulta SQL

Em caso de problemas com uma das suas consultas SQL, você deve primeiro testar diretamente em seu banco de dados. Usando (se estiver instalado) PHPMYADMIN, ou usando (se você puder) um cliente pesado, como HeidiSQl ou MysqlWorkbench: HeidiSQL.

Poste seu código no fórum

Quando você fizer uma pergunta em algum fórum especializado sobre um problema de programação ou consulta SQL, indique seu código. Para isso, você tem que colá-lo diretamente no fórum usando as tags de código.

Foto: © PHP.
Jean-François Pillou

Jean-François Pillou - Fundador do CCM
Mais conhecido como Jeff, Jean-François Pillou é o fundador do CommentCaMarche.net. Ele também é CEO do CCM Benchmark e diretor digital do Grupo Figaro.

Mais informações sobre a equipe do CCM