padrão de codificação php
TRANSCRIPT
![Page 1: Padrão de Codificação PHP](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/1.jpg)
Padronização de Codificação
PHPJuliano dos Santos da Silva
![Page 2: Padrão de Codificação PHP](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/2.jpg)
• 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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/3.jpg)
Formato do arquivo PHP
Nomenclaturas
Estilo de codificação
Tópicos
![Page 4: Padrão de Codificação PHP](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/34.jpg)
“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](https://reader033.vdocuments.com.br/reader033/viewer/2022051111/5571f80549795991698c7ab1/html5/thumbnails/35.jpg)
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