Diretriz: Normas de Codificação em PHP
O artigo abaixo descreve as normas de codificação em projetos utilizando a linguagem PHP.
Descrição Principal

Introdução

Estes padrões devem ser utilizados em qualquer código PHP desenvolvido pela Adok. A utilização de padrões tem como principais vantagens:

- Melhor manutenabilidade
- Melhor legibilidade (facilidade de leitura/entendimento)

Como regra geral, ao desenvolver um código de programação, sempre deve-se pensar que potencialmente outro programador utilizará o mesmo.

A presença de comentários ÚTEIS também é altamente recomendável, uma vez que mesmo passado um pequeno intervalo de tempo, o próprio programador pode esquecer detalhes da implementação.

Tags PHP

• Utilizar <?php   ?> para delimitar código PHP. pois é a forma mais portável de incluir código PHP em diferentes sistemas operacionais e configurações. Para simplificar escritas (saídas), é permitida a utilização de <?=   ?>
Identação e comprimento de linha
• Usar tabulação equivalente a 5 espaços.
• É recomendado que as linhas tenham entre 75-85 caracteres.

Comentários

• Comentários são recomendados sempre.
• Comentários estilo multi-linha (/* */) e linha única (//) são recomendados, ao passo que estilos Perl/shell (#) devem ser evitados.

Incluindo código

• 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.

Constantes

• Escritas em letras maiúsculas, com underscores separando palavras.
• 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.

Estruturas de controle

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

      if ((condition1)||(condition2)) {

        action1;

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

        action2;

      } else {

        defaultaction;
     
      }

    ?>

• Instruções de controle devem ter um espaço entre a instrução e a abertura de parênteses, para distinguí-las 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.
• As chaves devem aparecer na mesma linha da abertura da instrução.

• Para instruções switch:
    <?

    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
• Sem espaço entre o último parâmetro e o parênteses e o ponto-e-vírgula. Segue um exemplo:
   
    <?

    $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.

    <?

    $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:

    <?

    function fooFunction($arg1, $arg2 = '') {
        if (condition) {
            statement;
        }
        return $val;

    }

    ?>

Definição de classes

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

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

    ?>