Programando php com excelência

1.093 visualizações

Publicada em

Apresentação sobre boas práticas de programação em PHP. Ministrada na PHP Conference Brazil 2008

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.093
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programando php com excelência

  1. 1. Programando PHP com Excelência
  2. 2. ApresentaçãoMarcus Vinicius Bastos LeandroAnalista de Sistemas Sênior - 27 anos - Rio de JaneiroCasado – Pai ( babão ) de um lindo muleque de 3 anosStellium de Sol, Vênus e Lua em Leão.Empregado no portal Personare: http://www.personare.com.brEx-empregado do portal: Aonde.com: http://www.aonde.comProfessor Free-lancer do Ilearn: http://www.ilearn.com.br/ilearn/Escritor ( preguiçoso ) do blog Prosa Digital: http://www.prosadigital.comDesenvolvo em PHP há 5 anos
  3. 3. SumárioDicas de PerformanceBoas práticas de programaçãoNoções MVCNoções OOPartilha de experiências
  4. 4. Dicas de Performance• Usar aspas duplas somente quando houver a necessidade de interpretação do conteúdode uma variável.• O comando echo é mais rápido que o comando print.• Qual das linhas abaixo será executada de forma mais rápida?print "Hi my name is $a. I am $b";echo "Hi my name is $a. I am $b";echo "Hi my name is ".$a.". I am ".$b;echo "Hi my name is ",$a,". I am ",$b;• Use aspas simples nos índices de arrays associativas. Ex.: $array*‘chave’+• Use expressão regular APENAS se precisar usá-la. Ex.: str_replace é mais rápido quepreg_replace
  5. 5. Dicas de Performance• Não use funções em declarações de loop.Ex.:Mau:for ($i = 0; $i < count($array); $i++) { //stuff}Bom:$count = count($array);for($i = 0; $i < $count; $i++) { //stuff}
  6. 6. Dicas de Performance• Não ative register_globals e magic_quotes. • Estas diretivas são obsoletas e sumirão completamente no PHP6 • O uso de magic_quotes pode gerar confusão e resultados inesperados • O uso de register_globals abre uma brecha de segurança no código• Sempre inicialize as variáveis.Ex.:<?php$counter = 0;while( $counter < 1000 ){ echo ‘Contador: ‘, $counter; $counter++;}?>
  7. 7. Boas Práticas• Nomeie variáveis, funções, classes, constantes, etc. de modo que se outro programadortenha acesso ao seu código, entenda-o facilmente.Mau:<?php function s( $v1, $v2 ){ return $v1 + $v2 ; }?>Bom:<?php function soma( $number1, $number2 ){ return $ number1 + $ number2; }?>
  8. 8. Boas Práticas• Escreva comentários que possam elucidar trechos de código, funções, constantes, etc. edispense comentários inúteis.Ex.:Mau://Estou definindo uma classeclass URL extends Standard{ //definição do atributo privado $fullURL private $fullURL = ; private $notFound = false; public $Site; function loadParams(){ }}
  9. 9. Boas PráticasBom:/** * Representa uma url amigável. * Pode ser o caminho para um diretório ou para um arquivo * * @package Core * @author Marcus Vinicius * */class URL extends Standard{/** * Caminho completo da url que foi acessada, a partir do /* @var string * */private $fullURL = ;/** * Se for true, a url solicitada não foi encontrada* @var bool * */private $notFound = false;
  10. 10. Boas Práticas• Evite ( elimine ) códigos duplicados.• Trate todos os erros e todas as exceções.Mau:<?phpfunction divide( $number1, $number2 ){ return $number1/$number2;}?>Bom:<?phpfunction divide( $number1, $number2 ){ if( $number2 > 0 ){ return $number1/$number2; }else{ throw new Exception( ‘Impossível dividir por zero’ ); }}?>
  11. 11. Boas Práticas• Use e abuse das constantes. Ex.:Mau:<?phpif( $article->getStatus() == 1 ){ echo “Matéria publicada”;}?>Bom:<?phpdefine( ‘PUBLISHED’, 1 );if( $article->getStatus() == PUBLISHED ){ echo “Matéria publicada”;}?>
  12. 12. Boas Práticas• Que tal documentar seu código usando o PHPDoc?<?php /** * Classe controladora do núcleo do framework. * * @package Core * @author Marcus Vinicius <mvleandro@gmail.com> */final class Core extends Standard{/** * Determina o ambiente de execução como WebSite. * @var int */const WEB_SITE = 1;?>
  13. 13. Boas Práticas• Com o uso do PHPDoc, é possível gerar uma auto-documentação do seu sistema usandoferramentas livres, ou funcionalidades de editores como o Zend, por exemplo.• Veja um exemplo de documentação gerada automaticamente:Visualizar
  14. 14. Boas PráticasSaiba mais sobre PHPDoc:http://phpdoc.org/http://phpbrasil.com/artigo/zsFQt6foGtv7/2/phpdoc-documentando-bem-seu-codigo
  15. 15. Boas PráticasSiga um padrão de códigoQue tal usar o Camel Case?Camel Case é um padrão largamente utilizado em diversas linguagens deprogramação, como Java, Ruby e Python, principalmente nas definiçõesde Classes e Objetos. Ex.:class ExtranetUser { const USER_CONSTANT = ‘value’; private $id; public $Friends; function getId(){}}
  16. 16. Boas PráticasSaiba mais sobre Camel Case:http://pt.wikipedia.org/wiki/CamelCase
  17. 17. Boas PráticasNão faça tudo em um único script. Crie bibliotecas de funções ou desenvolva umaprogramação orientada a objetos.Exemplo de um site de jogos. Praticamente TODO o site está em um único script:categorias.phpSe for programar procedural, que tal agregar as funções em comum em bibliotecas?Ex.:User.lib.phpComment.lib.php
  18. 18. Boas PráticasUse sempre chaves nos laços.Certo, porém vulnerável a falhas:if ( $condicao ) echo “positivo”;else echo “negativo”;Correto e livre de falhas:if ( $condicao ){ echo “positivo”;}else{ echo “negativo”;}
  19. 19. Programação Orientada aObjetosA análise e projeto orientados a objetos têm como meta identificar o melhor conjuntode objetos para descrever um sistema de software. O funcionamento deste sistema sedá através do relacionamento e troca de mensagens entre estes objetos.PHP não é uma linguagem orienta a objetos. Sabem por quê?Mais sobre OOP:Livro UML 2.0 - Do Requisito à SoluçãoAutor: Adilson da Silva LimaPublicação: 01 / 07 /2005Edição: 1Editora: ÉricaISBN: 8536500700Páginas: 82Idioma: Português
  20. 20. MVCModel-view-controller (MVC) é um padrão de arquitetura de software que preconiza aseparação entre os dados (Model) e o layout (View). Desta forma, alterações feitas nolayout não afetam a manipulação de dados, e estes poderão ser reorganizados semalterar o layout.
  21. 21. MVCModel – Representa o domínioView – Representa a interface ( página HTML, documento XML, Gráfico, etc )Controller - Processa e responde a eventos, geralmente ações do usuário, e podeinvocar alterações no Model.Frameworks PHP MVC: • CakePHP - PHP 4 e 5 - http://www.cakephp.org/ • CodeIgniter - PHP 4 - http://www.codeigniter.com/ • Symfony - PHP 5 - http://www.symfony-project.com/ • Zend Framework - PHP 5 - http://framework.zend.com/
  22. 22. DicasAcesse e leia SEMPRE o http://php.netLeitura (inglês ) : https://www.ibm.com/developerworks/library/os-php-read/Aprenda inglêsCodifique em inglêsAcompanhe blogs, twitters e afinsIngresse numa comunidade php localParticipe de listasLeia o código fonte de terceiros ( frameworks, classes, bibliotecas, etc )
  23. 23. DicasFaça um frameworkSeja humilde. Sempre há muito o que se aprenderAbra a mente, leia livros não-técnicosBusque o autoconhecimentoUse protetor solar 
  24. 24. Rererênciashttp://wikipedia.org/http://cursos.ribafs.org/projeto/29-5-bons-habitos-de-programacao-em-phphttp://www.phpvs.net/2008/06/04/ten-php-best-practices-tips-that-will-get-you-a-job/Experiência própria
  25. 25. AgradecimentosÀ organização da PHP Conference 2009 Brasil em especial ao Galvão.A todos os participantesContato:Orkut: http://www.orkut.com.br/Main#Profile?uid=17278396634072629091Facebook: http://www.facebook.com/mvleandroTwitter: http://twitter.com/mvleandroMSN: marcus_leandro@hotmail.comGtalk: mvleandro@gmail.comEmail: mvleandro@gmail.comCel: 21-8211-9096

×