wiki:WF/PadroesdeCodificacaoPHP

Version 7 (modified by viani, 14 years ago) (diff)

--

Padrões de Codificação Php

Os padrões de codificação abaixo são muito importantes para a legibilidade do código. Procure seguir fielmente o que está descrito neste documento, para que o seu código fique padronizado e possa ser lido por outras pessoas que venham a dar manutenção em seu processo.

Tags PHP

  • Usar <?php ?> para delimitar código PHP, pois é a forma mais portável de incluir código PHP em diferentes sistemas operacionais e configurações.

Identação e comprimento de linha

  • Usar tabulação equivalente a 4 espaços.
  • É recomendado que as linhas tenham entre 75-85 caracteres.

Comentários

  • Comentários (blocos) de documentação PHPDoc? são obrigatórios;
  • Comentários adicionais explicativos, no meio do código, também são recomendados;
  • Comentários estilo multi-linha (/* */) e linha única () são recomendados, ao passo que estilos Perl/shell (#) devem ser evitados;
  • No comentário de elementos como classes ou funções, evitar repetir a classe do elemento na descrição. Por exemplo, no comentário de uma função, evitar incluir a palavra "função".

Incluindo código

  • Includes somente no arquivo shared.php. Caso seja absolutamente necessário incluir algum arquivo fora deste local, atentar para estas recomendações:
    • Usar require_once ao incluir incondicionalmente arquivos de classe.
    • Usar include_once ao incluir condicionalmente arquivos de classe.
    • require_once e include_once não são funções, portanto parênteses não devem envolver o nome do arquivo.

Convenções de nomenclatura

Classes

  • Devem ter nomes descritivos. Evitar usar abreviações. Nomes de classes devem começar com uma letra maiúscula.
  • Exemplos: Classe, MinhaClasse.

Métodos e funções

  • Devem usar o padrão camel-case (Java).
  • Exemplos: metodo, meuMetodo.
  • Membros privados de classes são precedidos de um underscore.

Constantes

  • Escritas em letras maiúsculas, com underscores separando palavras.
  • Podem ser prefixadas com o nome da classe/pacote onde elas são usadas.
  • As constantes true, false e null são exceções e devem ser escritas com letras minúsculas.

Variáveis globais

  • Se o projeto precisar definir variáveis globais, seus nomes devem iniciar com um underscore seguido pelo nome do projeto e outro underscore. Por exemplo, o pacote PEAR usa uma variável global chamada $_PEAR_destructor_object_list.

Nome de arquivos

  • De atividades: mesmo nome das atividades, adicionando a extensão .php. Exemplo: Compor.php, Escrever.php, Finalizar.php;
  • De templates: mesmo nome das atividades e respectivas ações, adicionando a extensão .tpl. Exemplo: Compor.tpl, Imprimir.tpl, Visualizar.tpl;
  • De classes: segue o formato class.nomeclasse.nomesuperclasse.inc.php.

Estruturas de controle

  • Incluem as instruções if, for, while, switch, etc. Segue abaixo um exemplo:
    <?php

      if((condition1)||(condition2))
      {
        action1;

      }
      elseif((condition3)&&(condition4))
      {
        action2;

      } else{

        defaultaction;
      }

    ?>
  • Instruções de controle devem ter um espaço entre a palavra-chave e a abertura de parênteses, para distingui-los de chamadas de funções.
  • É recomendado sempre usar chaves mesmo em situações onde elas são tecnicamente opcionais, pois aumentam a clareza da leitura e diminui a chance de erros lógicos serem introduzidos quando novas linhas forem adicionadas.
  • Para instruções switch:
    <?php

    switch (condition) {
        case 1:
            action1;
            break;

        case 2:
            action2;
            break;

        default:
            defaultaction;
            break;

    }
    ?>

Chamadas de função

  • Devem ser feitas sem espaços entre o nome da função e os parênteses, e o primeiro parâmetro; espaços entre vírgulas e cada parâmetro, e sem espaço entre o último parâmetro e o parênteses e o ponto-e-vírgula. Segue um exemplo:
    <?php

    $var = foo($bar, $baz, $quux);

    ?>
  • Como mostrado acima, deve haver um espaço entre a variável e o operador de atribuição e entre o operador e a chamada a função. Pode ser introduzidos mais espaços para aumentar a legibilidade.
    <?php

    $short         = foo($bar);
    $long_variable = foo($baz);

    ?>

Definição de funções

  • Argumentos com valores padrão aparecem ao final da lista de argumentos. Exemplo:
    <?php
    function fooFunction($arg1, $arg2 = '')
    {
        if (condition) {
            statement;
        }
        return $val;

    }

    ?>

Definição de classes

  • A chave de abertura fica na linha inferior ao do nome da classe e a de fechamento fica na linha seguinte da última linha de código.
    <?php

    class Classe
    {
      /* código PHP */ 
    }

    ?>
  • Definir apenas uma classe por arquivo .php;
  • Classes com métodos contendo argumentos String esperando valores pré-definidos devem declarar atributos internos escritos em maiúscula para funcionarem como constantes com os valores válidos, visando minimizar erros de digitação do argumento e aproveitar o autocomplete dos editores para membros de classe. Por exemplo:
    <?php

    class Classe
    {
        var $VERSION = "1.0";

        function showVersion($var)
        {
            echo $var;
        }

        function Classe()
        {
            $this->showVersion($this->VERSION);
        }
    }
    ?>
  • Deve-se seguir esta sequência de definições em uma classe:
    • Declaração de constantes;
    • Declaração de atributos;
    • Declaração de construtores;
    • Declaração de métodos.

Créditos

 Esta página é baseada nos padrões de codificação do Framework Zend