Skip to content

2.4 PHP

Davi Ramos edited this page Jul 29, 2016 · 14 revisions

As regras de estilo estabelecidas para PHP são baseadas no guia de estilo para PHP da Google.

O código deve ser seguir a PSR-1

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.

Espaçamento com 4 espaços

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.

Quantidade de caracteres por linha

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.

Utilização das linhas em branco

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() {

    }
} 

Arquivos

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

Linhas

  • 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 e True/False/Null

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

Argumentos de Métodos

  • 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
        }
    }
?>

Estrutura de Controle

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
    }
?>
Clone this wiki locally