-
Notifications
You must be signed in to change notification settings - Fork 1
2.4 PHP
As regras de estilo estabelecidas para PHP são baseadas no guia de estilo para PHP da Google.
Como não podia deixar de ser, a primeira regra da PSR-2 é que ela deve seguir a PSR-1, que por sua vez, segue a PSR-0, ou seja, para aplicar esta regra corretamente você deve antes aplicar as anteriores.
Na criação de uma classe, ou uma função ou um if() é recomendado a utilziação de 4 espaços. Caso você utilize a tecla tab para poder indicar que aquele bloco de código está dentro de algo, configure seu editor de textos, para que tenha o espaçamento com 4 espaços.
Não deve haver um limite rigoroso (hard limit) no comprimento das linhas. O limite máximo deve ser de 120 caracteres, entretanto é recomendado 80 caracteres ou menos.
Deve haver uma linha em branco após a declaração de namespace, e deve haver uma linha em branco após o bloco de declarações de uso. O exemplo a seguir, abrange as regras que foram citadas:
<?php
<?php
namespace Vendor\Package;
use FooInterface;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class Foo extends Bar implements FooInterface {
public function sampleFunction($a, $b = null) {
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar() {
}
}
- Todos os arquivos PHP deve usar o Unix LF (avanço de linha) linha final;
- Todos os arquivos PHP devem terminar com uma linha em branco;
- A tag de fechamento
?>
Deve ser omitida a partir de arquivos contendo apenas PHP;
- Não deve haver espaço em branco no final de linhas não-em-branco;
- As linhas em branco podem ser adicionadas para aumentar a legibilidade e para indicar blocos de código relacionados;
- Não deve haver mais de um comando (statement) por linha;
- Palavras-chave do PHP devem ser em letra minúscula (lower case);
- As constantes do PHP true, false e null devem ser em letra minúscula (lower case).
- Na lista de argumentos, não deve haver um espaço antes de cada vírgula e deve haver um espaço após cada vírgula;
- Os argumentos de métodos com valor padrão devem vir no final da lista de argumentos;
<?php
class ClassName {
public function myRegister($age, $record, $name = 'davi') {
// corpo do método
}
}
?>
- As listas de argumentos podem ser dividas em múltiplas linhas, onde cada linha subsequente é indentada uma vez. Quando fizer isto, o primeiro item na lista deve estar na próxima linha e deve haver um argumento por linha.
- Quando a lista de argumento for dividida em múltiplas linhas, o parêntese de fechamento e a chave de abertura devem ser colocados na mesma linha com um espaço entre eles.
<?php
namespace VendorPackage;
class ClassName {
public function myFamily(
$father,
$mother,
$brother,
) {
// corpo do método
}
}
?>
Ainda existem as regras para estruturas de controle, ou seja, para if, else, ifelse, switch, case, while, do while, for, foreach, try e catch. As regras são bem claras:
- Deve haver um espaço depois da palavra-chave da estrutura de controle;
- Não deve haver espaço depois do parêntese de abertura;
- Deve haver um espaço entre o parêntese de fechamento e a chave de abertura;
- A estrutura do corpo deve ser indentada uma vez;
- A chave de fechamento deve vir na próxima linha após o corpo;
Só os conjuntos if, else e ifelse e switch e case possuem regras próprias, os outros se baseiam no escrito acima.
- Else e elseif são na mesma linha da chave de fechamento do corpo anterio;
- A palavra-chave elseif deveria ser usada ao invés de else if, de modo que todas as estruturas de controle pareçam uma única palavra;
- A palavra-chave elseif deveria ser usada ao invés de else if, de modo que todas as estruturas de controle pareçam uma única palavra;
- A palavra-chave break (ou outra palavra-chave de finalização) deve ser indentada no mesmo nível do corpo de case;
O exemplos a seguir, abrange as regras que foram citadas:
<?php
if ($expr1) {
// corpo if
} elseif ($expr2) {
// corpo elseif
} else {
// corpo else;
}
?>
<?php
switch ($expr) {
case 0:
echo 'Primeiro caso, com uma quebra';
break;
case 1:
echo 'Segundo caso, que "cai" para o(s) seguinte(s)';
// no break
case 2:
case 3:
case 4:
echo 'Terceiro caso, return é usado ao invés de break';
return;
default:
echo 'Caso padrão';
break;
}
?>
<?php
while ($expr) {
// corpo de estrutura
}
do {
// corpo de estrutura;
} while ($expr);
?>
<?php
for ($i = 0; $i < 10; $i++) {
// corpo de for
}
foreach ($iterable as $key => $value) {
// corpo de foreach
}
?>
<?php
try {
// corpo de try
} catch (FirstExceptionType $e) {
// corpo de catch
} catch (OtherExceptionType $e) {
// corpo de catch
}
?>