As regras de codificação apoiam-se na recomendação PSR-12 sem a respeitar totalmente; ver detalhes mais abaixo.
Elas estão reunidas num conjunto de regras usáveis com a ferramenta PHP_CodeSniffer na sua extensão spip/coding-standards.
Ficheiros
- A tag de abertura de um ficheiro PHP DEVE ser
<?php
. A abertura<?
está proscrita. - A codificação de caracteres dos ficheiros PHP DEVE ser UTF-8 sem BOM.
- Todos os ficheiros PHP DEVEM usar unicamente o fim de linha Unix LF (linefeed).
- Todos os ficheiros PHP DEVEM terminar por uma linha não vazia, terminada por um único LF.
- A tag de fechamento
?>
DEVE ser omitida nos ficheiros que contenham unicamente PHP.
Linhas e indentação
- NÃO DEVE HAVER limite estrito de largura da linha.
- O limite flexível para a largura da linha DEVE ser de 120 caracteres.
- As linhas NÃO DEVEM ultrapassar os 80 caracteres; as linhas mais longas DEVEM ser divididas em varias linhas seguintes de, no máximo, 80 caracteres cada.
- NÃO DEVE HAVER espaços no final das linhas.
- Linhas em branco PODEM ser incluídas para melhorar a legibilidade e para indicar blocos de código associados, exceto onde isso for explicitamente proibido.
- N#AO DEVE HAVER mais de uma instrução por linha.
- Ao contrário do PSR-12, o código DEVE usar uma tabulação para cada nível de indentação e NÃO DEVE usar espaços para a indentação.
Funções, Classes e Namespaces
- Nas versões 4.x e anteriores, o SPIP não segue nenhuma PSR de autoloading (ex: PSR-4). Consequentemente, o SCS1 não impõe nenhum formalismo para os namespaces e as classes, incluindo Traits e interfaces.
- As funções DEVEM ser declaradas em snake_case.
- A chaveta de abertura DEVE estar na mesma linha do nome da função, e DEVE ter um espaço antes e nenhum espaço depois.
function minha_funcao() { $minha_variavel = 0; // … return $meu_resultado; }
Constantes, Variáveis e propriedades de classe
- As constantes DEVEM ser declaradas em maiúsculas com um sublinhado como separador e prefixadas com um sublinhado.
define('_NOVA_CONSTANTE', true);
- As variáveis e os argumentos de funções DEVEM ser declarados em snake_case.
function minha_super_funcao($um_argumento, $outro_argumento) { … }
- as propriedades de classe PODEM ser declaradas em snake_case.
- As variáveis globais, cujo uso é desaconselhado, são referenciadas por
$GLOBALS['xxx']
e não por uma declaraç#aoglobal $xxx
, pos isso permite ter certeza da referência que se está a usar e facilitar a distinção durante a leitura do código.if (isset($GLOBALS['meta']['endereco_site'])) { $adresse = $GLOBALS['meta']['endereco_site']; }
Palavras-chave reservadas, Estruturas de controlo e operadores
- Todas as palavras-chave e tipos reservados do PHP 12 DEVEM estar em minúsculas.
- Todos os novos tipos e palavras-chave às futuras versões do PHP DEVEM estar em minúsculas.
- A forma curta das palavras-chave de "type", quando presentes, DEVEM ser usadas, ou seja
bool
em vez deboolean
,int
em vez deinteger
etc. - A chaveta de abertura das estruturas de controle DEVEM estar na mesma linha que o nome da função, e DEVEM ter um espaço anter e nenhum espaço após.
- Nas expressões PHP, deixar um espaço de cada lado dos operadores binários (+, =, *, and, ...).
$hipotenusa = sqrt(($a * $a) + ($b * $b));
- Os operadores unários (!, ...) devem estar colados ao parâmetro ao qual se aplicam.
- a notação curta DEVE ser aplicada às matrizes
$tableau = [ 'chave' => 'valor', ... ];
Operações em strings
- Use aspas duplas apenas quando for necessário. Se não tiver uma variável ($var) ou um caracter de controle (\n, \r, \t...) para avaliar na string, use aspas simples.
$string = "<a href=\"$url\">Link</a>\n"; $string2 = 'Uma frase simples: ' . $outra_coisa;