Um pequeno guia pessoal para padrões no desenvolvimento PHP. Todo o conteúdo visa a escrita de um código mais limpo e organizado e não deve ser usado como única fonte de consulta.
Este guia, de maneira nenhuma, substitui quaisquer recomendações PSR propostos pelo FIG-Standards
- Respeite a forma de indentação pré-estabelecida.
- Quebre linhas sempre que iniciar um novo comando.
- NUNCA utilize . Prefira sempre para scripts completos ou includes/requires. Para disparos de strings, utilize a forma abreviada .
- Arquivos de script PHP puros não precisam do ?> no final do arquivo. Isso evita que escape algum HTML indesejado.
- Utilize as palavras reservadas sempre em minúsculo: true, false, break, continue, if, foreach, etc.
- Utilize chaves {} ou : sempre na linha que se seguem comandos condicional ou laços de repetição.
if ( $um == 1 ) :
// ou
foreach ( $arr as $a ) :
- Utilize aspas duplas " " para strings que possam concatenar variáveis dentro delas. Para isto, utilize chaves {} para concatenar a variável sem precisar quebrar o fluxo das aspas duplas.
$world = 'world';
echo "Hello, {$world}!";
- Deixe um espaço para cada definição de estrutura imposta por parênteses () e chaves {}. Esta diretriz não é válida para colchetes [].
// Espaços entre as declarações de cada parênteses ()
if ( $um == 1 ) :
echo "Isto é um.";
else
echo "Isto não é um.";
endif;
// A utilização dos colchetes deve vir seguida à palavra respectiva.
$frutas[5] = "Laranja";
- Encadeie as declarações de atributos de métodos em um único escopo.
NOTA: Evite utilizar essa forma de declaração de atributos.
Procure sempre criar atributos separados para facilitar os comentários de documentação.
class Classe_Teste {
public $foo,
$bar = 1,
$trip = "test",
$myArray = [];
}
Preserve as seguintes diretrizes para nomeação de variáveis, constantes, atributos, métodos e classes:
- Utilize nomes sucintos e diretos referente à que se refere a variável, constante, atributo, método ou classe.
- Evite nomes muito extensos.
// nomes extensos confundem na hora de fazer a leitura da classe/método/variável
function methodToDoWhateverThingThatYouWant();
class ClassToDoWhateverThingThatYouWant()
- Prefira nomes em inglês. Desse modo, palavras que na grafia em português exigem acentuação não ficarão difíceis de ler/compreender.
function doAnything();
function writeSomething();
- Utilize UpperCamelCase para definições de classes.
class FoolAround();
- Utilize lowerCamelCase para definições de variáveis, atributos e métodos.
$indexPosition = 1;
function doAnything();
function writeSomething();
- Utilize maiúsculas e palavras separadas por underline (_) para definição de constantes.
// MAIÚSCULAS e separadas por ''underline'' "_" para constantes
define ("INDEX_POSITION" , 1);
- Prefira variáveis no SINGULAR e arrays no PLURAL. Isso auxiliará a compreensão de conjuntos ou strings.
// No singular, para demonstrar um elemento string
$fruta = "Maçã";
// No plural, para demonstrar conjunto de elementos
$frutas = [
1 => "Maçã" ,
2 => "Laranja"
];
Indentação nunca é perda de tempo. Ela torna o código muito mais agradável de ler e compreender.
- Configure seu editor para utilizar a indentação de 1 TAB (4 espaços).
- Prefira estruturas de condições e repetições utilizando seu inicalizador na mesma linha da definição do comando.
- Obedeça a hierarquia dos elementos encadeados. Utilize 1 TAB para cada novo elemento filho.
if ( $personagem === 'Goku' ) :
echo "Oi, eu sou o Goku!";
else :
echo "Cacaroto, seu verme imundo!";
endif;
- Utilize identação em elementos separados por vírgula, concatenação (.) e/ou arrays.
$frutas = [
1 => "Maçã" ,
2 => "Laranja"
];
public $foo,
$bar = 1,
$trip = "test",
$myArray = [];
Antes de deixar um comentário, releia seu código e reescreva-o de uma maneira que ele não precise de comentário :)
- Comentários só devem ser usados quando realmente necessário.
- Para comentários de 01 linha, utilize //
- Para comentários que exigem múltiplas linhas, utilize o formato phpDocumentor /** */
// Diretório principal do projeto
$dirProject = "pasta/www/";
/**
* Diretório principal do projeto
* Precisa utilizar caminho completo (ROOT)
*/
$dirProject = "pasta/www/";