Padrão de Codificação PHP

35
Padronização de Codificação PHP Juliano dos Santos da Silva

Transcript of Padrão de Codificação PHP

Page 1: Padrão de Codificação PHP

Padronização de Codificação

PHPJuliano dos Santos da Silva

Page 2: Padrão de Codificação PHP

• Escrever um código organizado, bem estruturado e documentado.

• Melhorar a visibilidade na codificação, facilitando assim futuras manutenções e implementações.

• Assegurar alta qualidade do código e diminuir erros.

• Prover um guia de codificação padrão para toda equipe.

Objetivos

Page 3: Padrão de Codificação PHP

Formato do arquivo PHP

Nomenclaturas

Estilo de codificação

Tópicos

Page 4: Padrão de Codificação PHP

Formato do arquivo PHP

IdentaçãoTAB com tamanho de 4 espaços.

Codificação do arquivoUTF-8.

Tamanho máximo da linha80 caracteres, mas é aceitável até 120 caracteres.

Término de linhaLinhas devem terminar apenas com LineFeeds (LF) – [\n]

Page 5: Padrão de Codificação PHP

Nomenclaturas

Classes - UpperCamelCaseEx: MySql, FileUpload, ReadRss

Variáveis - lowerCamelCaseEx: $objBanco, $fileImage, $readFeed

Propriedades - lowerCamelCaseEx: $this->tableName, $this->fieldId

Page 6: Padrão de Codificação PHP

Nomenclaturas

Funções - lowerCamelCaseEx: setId(), getName(), getFile()

Métodos - lowerCamelCaseEx: $this->getTable(), $this->getFields()

Constantes – UPPERCASE e _Ex: DB_HOST, DB_USER, BASE_URL

Page 7: Padrão de Codificação PHP

Nomenclaturas

Arquivos de Classes – UpperCamelCaseEx: MySql.class.php, FileUpload.class.php

Observação: Sempre o mesmo nome para classe e arquivo.

Page 8: Padrão de Codificação PHP

Nomenclaturas

Recomendações:

• Somente usar abreviações quando for realmente necessário ou se tratar de costume; palavras completas facilitam o entendimento e conseqüentemente melhoram a legibilidade.

• Para decisão do uso de palavra estrangeira ou nacional deve ser levado em consideração, mais uma vez, a questão da facilidade de entendimento; a palavra que passar mais facilmente a idéia desejada deve ser utilizada.

Page 9: Padrão de Codificação PHP

Estilo de Codificação

Demarcação de código PHP- Não usar short-tags. Ex: <? e <?=- Usar tags completas. Ex: <?php e <?php echo

Operadores- Usar espaços entre os operadores. Ex: =, ==, +, -, %, &&, || e demais.

Comentários- Usar // para uma linha de comentário e /* */ para mais de uma linha.

Page 10: Padrão de Codificação PHP

Estilo de Codificação

Inserir código HTML

- Não se utilizar de echo para inserir código HTML. Ex: <?php echo “<img src=‘image.jpg’ alt=‘image’ id=‘img’ />” ?>

-Inserir código HTML entre tags PHP.Ex:?><img src=“image.jpg” alt=“image” id=“img” /><?php

Page 11: Padrão de Codificação PHP

Estilo de Codificação

Strings literais - Se a string não contiver variáveis de substituição, deve-se usar aspas simples.

Ex: $tmpStr = ‘Exemplo de String’;

Strings literais com Apóstrofos – É recomendado o uso de aspas duplas para evitar slashes [\].

Ex: $tmpStr = “SELECT * FROM alunos WHERE nome = ‘João’”;

Page 12: Padrão de Codificação PHP

Estilo de Codificação

Strings com substituição de variáveis - Usar aspas duplas.

Ex: $tmpStr = “Exemplo de String com {$variavel} ”;

Concatenação Strings

Ex: $tmpStr = “Exemplo {$de} String com {$variavel} ”;

Não recomendado:

$tmpStr = ‘Exemplo’ . $de . ” String com $variavel ”;

Page 13: Padrão de Codificação PHP

Estilo de Codificação

Concatenação Strings (continuação) – Quando a string for longa, procurar concatenar com o operador de “.”, alinhando o operador “.” abaixo do operador “=”.

Ex:

$tmpSql = ’SELECT id, nome ‘. ’FROM alunos ‘. ”WHERE nome = ‘João Pereira’ ”;

Page 14: Padrão de Codificação PHP

Estilo de Codificação

if/elseif/else

- O parêntese “()” deve vir logo após a instrução if e elseif.

- Usar espaço simples depois do “(” e antes do “)” da condição no if e no elseif.

- O uso de das chaves “{” e “}” é obrigatório.

Page 15: Padrão de Codificação PHP

Estilo de Codificação

if/elseif/else (continuação)

- A chave “{” virá abaixo da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.

- Expressões if, elseif e else devem estar em linhas separadas.

Page 16: Padrão de Codificação PHP

Estilo de Codificação

if/elseif/else (continuação)

If( $intValor == 1 ) {

$intValor++;}elseif( ( $intValor == 2 ) || ( $intValor == 3 ) ) {

$intValor--;}else {

$intValor = $intValor – 2;}

Page 17: Padrão de Codificação PHP

Estilo de Codificação

while/for/foreach

- O parêntese “()” deve vir logo após uma instrução while, for ou foreach.

- Usar espaço simples depois do “(” e antes do “)” da expressão.

- O uso de das chaves “{” e “}” é obrigatório.

Page 18: Padrão de Codificação PHP

Estilo de Codificação

while/for/foreach (continuação)

- A chave “{” virá abaixo da linha da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.

Page 19: Padrão de Codificação PHP

Estilo de Codificação

while/for/foreach (continuação)

while( !feof( $hFile ) ){

// instruções}...for( $intCount = 0; $intCount <= 10; $intCount++ ) {

// instruções}...foreach( $arrList as $mixKey => $mixValue ) {

// instruções}

Page 20: Padrão de Codificação PHP

Estilo de Codificação

switch/case

- O parêntese “()” deve vir logo após uma instrução switch.

- Usar espaço simples depois do “(” e antes do “)” da expressão.

- O uso de das chaves “{” e “}” é obrigatório.

Page 21: Padrão de Codificação PHP

Estilo de Codificação

switch/case (continuação)

- A chave “{” virá abaixo da linha da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.

- Qualquer código dentro de: case e default, precisa ser identado com quatro espaços, inclusive a palavra reservada: break.

Page 22: Padrão de Codificação PHP

Estilo de Codificação

switch/case (continuação)

switch( $intNivel ){ case 1: // Qualquer conteúdo // precisa ser identado com [Tab|4 espaços]. break; case 2: // Qualquer conteúdo // precisa ser identado com [Tab|4 espaços]. break; default: // Qualquer conteúdo // precisa ser identado com [Tab|4 espaços].}

Page 23: Padrão de Codificação PHP

Estilo de Codificação

try/catch

- O parêntese “()” deve vir logo após uma instrução catch.

- Usar espaço simples depois do “(” e antes do “)” da expressão.

- O uso de das chaves “{” e “}” é obrigatório.

Page 24: Padrão de Codificação PHP

Estilo de Codificação

try/catch (continuação)

- A chave “{” virá abaixo da linha da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.

Page 25: Padrão de Codificação PHP

Estilo de Codificação

try/catch (continuação)

try {

$link = @mysql_connect( ’localhost’, ’joaozinho’, ’123456’ );if( !$link ){

throw new Exception();}else{

$status = true;}

}catch( Exception $e ){

$status = false;$e->message( 'Não foi possível conectar-se ao banco de dados.’ );

}

Page 26: Padrão de Codificação PHP

Estilo de Codificação

Inclusão de arquivo de classe

- Utilizar função __autoload que é automaticamente chamada no caso de você tentar usar uma classe/interface que ainda não foi definida.

function __autoload( $className ){

require_once “{$className}.class.php”;}

$obj = new MyClass1();$obj2 = new MyClass2();

Page 27: Padrão de Codificação PHP

Estilo de Codificação

Classes

- As chaves “{” e “}” virão na linha abaixo do nome da classe.

- Toda classe deve ter um bloco de documentação em conformidade ao padrão do PHPDocumentor.

- Só é permitida uma classe por arquivo PHP.

Page 28: Padrão de Codificação PHP

Estilo de Codificação

Variáveis de Classes ou Propriedades

- Devem ser declaradas no topo da classe, antes de qualquer declaração de método.

- Não utilizar o identificador: var (php4).

- Sempre declarar sua visibilidade: private, protected ou public. Preferencialmente não utilizar declaração de variáveis de classes como public para não incentivar o uso de (set/get).

Page 29: Padrão de Codificação PHP

Estilo de Codificação

Métodos

- As chaves “{” e “}” virão na linha abaixo do nome do método.

- Toda método deve ter um bloco de documentação em conformidade ao padrão do PHPDocumentor.

- Sempre declarar sua visibilidade: private, protected ou public.

Page 30: Padrão de Codificação PHP

Estilo de Codificação

Métodos (continuação)

- Método construtor sempre deve ser identificado por __construct().

- Propriedades e métodos de uma classe devem ser referenciados internamente com uso do identificador $this.

- Procurar tratar sempre os erros, lançando as exceções necessárias.

Page 31: Padrão de Codificação PHP

Estilo de Codificação

Exemplo de Classe

<?php/*** [Descrição do arquivo].** [mais informações precisa ter 1 [ENTER] para definir novo parágrafo]** [pode usar quantas linhas forem necessárias]* [linhas logo abaixo como esta, são consideradas mesmo parágrafo]** @package [Nome do pacote de Classes, ou do sistema]* @category [Categoria a que o arquivo pertence]* @name [Apelido para o arquivo]* @author [nome do autor] <[e-mail do autor]>* @copyright [Informações de Direitos de Cópia]* @license [link da licença] [Nome da licença]* @link [link de onde pode ser encontrado esse arquivo]* @version [Versão atual do arquivo]* @since [Arquivo existe desde: Data ou Versao]*/

Page 32: Padrão de Codificação PHP

Estilo de Codificaçãoclass ClasseExemplo{

/*** @access private* @var string*/private $privada = null;/*** @access protected* @var int*/protected $protegida = 0;/*** @var string*/public $publica = null;/*** @static* @var string*/public static $publicaEstatica = null;

Page 33: Padrão de Codificação PHP

Estilo de Codificação/*** Seta o um valor à propriedade Name.* @access public* @param string $pValue Nome Completo* @return void*/public function setName( $pValue ){

// Qualquer conteúdo// precisa ser identado com [Tab|4 espaços].

}

/*** Retorna o valor da propriedade Name.* @access public* @return string*/public function getName(){

// Qualquer conteúdo// precisa ser identado com [Tab|4 espaços].

}}

Page 34: Padrão de Codificação PHP

“A perfeição não é alcançada quando já não há mais nada para adicionar, mas sim, quando já não há mais nada do que se possa retirar.”

(Antonie de Saint-Exupéry)

Pensamento

Page 35: Padrão de Codificação PHP

Zend Framework: Coding Standards for PHP

PEAR Coding Standards

Coding Standards for CakePHP

Walker de Alencar :: Padrões e Metodologias

Wikipedia: CamelCase

Apostilas Folk PHP

API Joomla! 1.5

Referências