SlideShare uma empresa Scribd logo
Programando PHP com Excelência
Apresentação
Marcus Vinicius Bastos Leandro
Analista de Sistemas Sênior - 27 anos - Rio de Janeiro
Casado – Pai ( babão ) de um lindo muleque de 3 anos
Stellium de Sol, Vênus e Lua em Leão.
Empregado no portal Personare: http://www.personare.com.br
Ex-empregado do portal: Aonde.com: http://www.aonde.com
Professor Free-lancer do Ilearn: http://www.ilearn.com.br/ilearn/
Escritor ( preguiçoso ) do blog Prosa Digital: http://www.prosadigital.com
Desenvolvo em PHP há 5 anos
Sumário
Dicas de Performance
Boas práticas de programação
Noções MVC
Noções OO
Partilha de experiências
Dicas de Performance
• Usar aspas duplas somente quando houver a necessidade de interpretação do conteúdo
de 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 que
preg_replace
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
}
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++;
}
?>
Boas Práticas
• Nomeie variáveis, funções, classes, constantes, etc. de modo que se outro programador
tenha 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;
}
?>
Boas Práticas
• Escreva comentários que possam elucidar trechos de código, funções, constantes, etc. e
dispense comentários inúteis.Ex.:
Mau:
//Estou definindo uma classe
class URL extends Standard{
//definição do atributo privado $fullURL
private $fullURL = '';
private $notFound = false;
public $Site;
function loadParams(){
}
}
Boas Práticas
Bom:
/**
* 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;
Boas Práticas
• Evite ( elimine ) códigos duplicados.
• Trate todos os erros e todas as exceções.
Mau:
<?php
function divide( $number1, $number2 ){
return $number1/$number2;
}
?>
Bom:
<?php
function divide( $number1, $number2 ){
if( $number2 > 0 ){
return $number1/$number2;
}else{
throw new Exception( ‘Impossível dividir por zero’ );
}
}
?>
Boas Práticas
• Use e abuse das constantes. Ex.:
Mau:
<?php
if( $article->getStatus() == 1 ){
echo “Matéria publicada”;
}
?>
Bom:
<?php
define( ‘PUBLISHED’, 1 );
if( $article->getStatus() == PUBLISHED ){
echo “Matéria publicada”;
}
?>
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;
?>
Boas Práticas
• Com o uso do PHPDoc, é possível gerar uma auto-documentação do seu sistema usando
ferramentas livres, ou funcionalidades de editores como o Zend, por exemplo.
• Veja um exemplo de documentação gerada automaticamente:
Visualizar
Boas Práticas
Saiba mais sobre PHPDoc:
http://phpdoc.org/
http://phpbrasil.com/artigo/zsFQt6foGtv7/2/phpdoc-documentando-bem-seu-codigo
Boas Práticas
Siga um padrão de código
Que tal usar o Camel Case?
Camel Case é um padrão largamente utilizado em diversas linguagens de programação,
como Java, Ruby e Python, principalmente nas definições de Classes e Objetos. Ex.:
class ExtranetUser {
const USER_CONSTANT = ‘value’;
private $id;
public $Friends;
function getId(){}
}
Boas Práticas
Saiba mais sobre Camel Case:
http://pt.wikipedia.org/wiki/CamelCase
Boas Práticas
Não faça tudo em um único script. Crie bibliotecas de funções ou desenvolva uma
programação orientada a objetos.
Exemplo de um site de jogos. Praticamente TODO o site está em um único script:
categorias.php
Se for programar procedural, que tal agregar as funções em comum em bibliotecas?
Ex.:
User.lib.php
Comment.lib.php
Boas Práticas
Use 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”;
}
Programação Orientada a
Objetos
A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto
de objetos para descrever um sistema de software. O funcionamento deste sistema se
dá 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ção
Autor: Adilson da Silva Lima
Publicação: 01 / 07 /2005
Edição: 1
Editora: Érica
ISBN: 8536500700
Páginas: 82
Idioma: Português
MVC
Model-view-controller (MVC) é um padrão de arquitetura de software que preconiza a
separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no
layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem
alterar o layout.
MVC
Model – Representa o domínio
View – Representa a interface ( página HTML, documento XML, Gráfico, etc )
Controller - Processa e responde a eventos, geralmente ações do usuário, e pode
invocar 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/
Dicas
Acesse e leia SEMPRE o http://php.net
Leitura (inglês ) : https://www.ibm.com/developerworks/library/os-php-read/
Aprenda inglês
Codifique em inglês
Acompanhe blogs, twitters e afins
Ingresse numa comunidade php local
Participe de listas
Leia o código fonte de terceiros ( frameworks, classes, bibliotecas, etc )
Dicas
Faça um framework
Seja humilde. Sempre há muito o que se aprender
Abra a mente, leia livros não-técnicos
Busque o autoconhecimento
Use protetor solar 
Rererências
http://wikipedia.org/
http://cursos.ribafs.org/projeto/29-5-bons-habitos-de-programacao-em-php
http://www.phpvs.net/2008/06/04/ten-php-best-practices-tips-that-will-get-you-a-
job/
Experiência própria
Agradecimentos
À organização da PHP Conference 2009 Brasil em especial ao Galvão.
A todos os participantes
Contato:
Orkut: http://www.orkut.com.br/Main#Profile?uid=17278396634072629091
Facebook: http://www.facebook.com/mvleandro
Twitter: http://twitter.com/mvleandro
MSN: marcus_leandro@hotmail.com
Gtalk: mvleandro@gmail.com
Email: mvleandro@gmail.com
Cel: 21-8211-9096

Mais conteúdo relacionado

Mais procurados (20)

PPTX
C# 6.0 - Novos Recursos (Agosto/2015)
Renato Groff
 
PDF
Palestra - Symfony Framework MVC PHP 5
Lucas Augusto Carvalho
 
PPTX
Modern PHP
Ari Stopassola Junior
 
PDF
Aula 02 - Introdução ao PHP
Daniel Brandão
 
ODP
Curso Linguagem de Programação I - PHP Básico
Norton Guimarães
 
PPTX
.NET e C# - Introdução Geral
Gabriel Vinicios Silva Maganha
 
PPTX
Introdução C#
Luis Fernando Marques
 
PDF
Seu framework é melhor pra quê?
Jaime Neto
 
KEY
Orientação a Objetos com PHP
Augusto Pascutti
 
PDF
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
Rogério Moraes de Carvalho
 
PDF
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Flávio Lisboa
 
PDF
PHP Turbinado com CodeIgniter - Conisli 2011
Evaldo Junior
 
PDF
Começando com Zend Framework 2
Cezar Souza
 
PDF
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
PPTX
Aula 01 introdução ao php
Adriano Castro
 
ODP
Introdução ao framework CodeIgniter
Anderson Gonçalves
 
PPS
CURSO DE PHP PARA INICIANTES - AULA 1
Norivan Oliveira
 
PPT
Php FrameWARks - sem CakePHP
Marcio Albuquerque
 
PDF
Ap 04 05_10
jpsaraiva
 
PPT
Introdução ao framework Django
Eduardo Palma
 
C# 6.0 - Novos Recursos (Agosto/2015)
Renato Groff
 
Palestra - Symfony Framework MVC PHP 5
Lucas Augusto Carvalho
 
Aula 02 - Introdução ao PHP
Daniel Brandão
 
Curso Linguagem de Programação I - PHP Básico
Norton Guimarães
 
.NET e C# - Introdução Geral
Gabriel Vinicios Silva Maganha
 
Introdução C#
Luis Fernando Marques
 
Seu framework é melhor pra quê?
Jaime Neto
 
Orientação a Objetos com PHP
Augusto Pascutti
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
Rogério Moraes de Carvalho
 
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Flávio Lisboa
 
PHP Turbinado com CodeIgniter - Conisli 2011
Evaldo Junior
 
Começando com Zend Framework 2
Cezar Souza
 
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
Aula 01 introdução ao php
Adriano Castro
 
Introdução ao framework CodeIgniter
Anderson Gonçalves
 
CURSO DE PHP PARA INICIANTES - AULA 1
Norivan Oliveira
 
Php FrameWARks - sem CakePHP
Marcio Albuquerque
 
Ap 04 05_10
jpsaraiva
 
Introdução ao framework Django
Eduardo Palma
 

Semelhante a Programando php com excelência (20)

PDF
PHP, Mercado e Certificações
Fernando Geraldo Mantoan
 
PPTX
Apresentação faef
Lucas Simões Maistro
 
PPT
Apresentação faef
Lucas Simões Maistro
 
PDF
Serversidephp pptx2-120418140114-phpapp01
joaocarlobarros
 
PDF
Dicas para sua carreira de Desenvolvedor PHP
Douglas V. Pasqua
 
PPTX
Seja um júnior não seja um sobrinho
Alexandre Andrade
 
PDF
PHP 5 de Forma Correta e Segura
Kleber Silva
 
PPTX
Desenvolvimento Web com PHP - Aula 3
Thyago Maia
 
PDF
Programando Melhor - Flisol
Leonn Leite
 
PDF
PHP - Uma Pequena Introducao
jonatasoliveira
 
PPTX
Fundamentos da Programação PHP OO - Aula 1
Thyago Maia
 
PDF
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Luís Cobucci
 
PDF
Curso de PHP - Objetos
Fabio Moura Pereira
 
PDF
O programador php
Lourdilene Souza
 
PDF
O programador php
COTIC-PROEG (UFPA)
 
PDF
Php Conf08 Refactoring
Wildtech
 
PPTX
Fundamentos da Programação PHP OO - Aula 3
Thyago Maia
 
PDF
PHP Anti Patterns
Theoziran Lima
 
PDF
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro
 
PDF
PHP - Programação para seres humanos
Caike Souza
 
PHP, Mercado e Certificações
Fernando Geraldo Mantoan
 
Apresentação faef
Lucas Simões Maistro
 
Apresentação faef
Lucas Simões Maistro
 
Serversidephp pptx2-120418140114-phpapp01
joaocarlobarros
 
Dicas para sua carreira de Desenvolvedor PHP
Douglas V. Pasqua
 
Seja um júnior não seja um sobrinho
Alexandre Andrade
 
PHP 5 de Forma Correta e Segura
Kleber Silva
 
Desenvolvimento Web com PHP - Aula 3
Thyago Maia
 
Programando Melhor - Flisol
Leonn Leite
 
PHP - Uma Pequena Introducao
jonatasoliveira
 
Fundamentos da Programação PHP OO - Aula 1
Thyago Maia
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Luís Cobucci
 
Curso de PHP - Objetos
Fabio Moura Pereira
 
O programador php
Lourdilene Souza
 
O programador php
COTIC-PROEG (UFPA)
 
Php Conf08 Refactoring
Wildtech
 
Fundamentos da Programação PHP OO - Aula 3
Thyago Maia
 
PHP Anti Patterns
Theoziran Lima
 
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro
 
PHP - Programação para seres humanos
Caike Souza
 
Anúncio

Programando php com excelência

  • 1. Programando PHP com Excelência
  • 2. Apresentação Marcus Vinicius Bastos Leandro Analista de Sistemas Sênior - 27 anos - Rio de Janeiro Casado – Pai ( babão ) de um lindo muleque de 3 anos Stellium de Sol, Vênus e Lua em Leão. Empregado no portal Personare: http://www.personare.com.br Ex-empregado do portal: Aonde.com: http://www.aonde.com Professor Free-lancer do Ilearn: http://www.ilearn.com.br/ilearn/ Escritor ( preguiçoso ) do blog Prosa Digital: http://www.prosadigital.com Desenvolvo em PHP há 5 anos
  • 3. Sumário Dicas de Performance Boas práticas de programação Noções MVC Noções OO Partilha de experiências
  • 4. Dicas de Performance • Usar aspas duplas somente quando houver a necessidade de interpretação do conteúdo de 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 que preg_replace
  • 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. 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. Boas Práticas • Nomeie variáveis, funções, classes, constantes, etc. de modo que se outro programador tenha 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. Boas Práticas • Escreva comentários que possam elucidar trechos de código, funções, constantes, etc. e dispense comentários inúteis.Ex.: Mau: //Estou definindo uma classe class URL extends Standard{ //definição do atributo privado $fullURL private $fullURL = ''; private $notFound = false; public $Site; function loadParams(){ } }
  • 9. Boas Práticas Bom: /** * 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. Boas Práticas • Evite ( elimine ) códigos duplicados. • Trate todos os erros e todas as exceções. Mau: <?php function divide( $number1, $number2 ){ return $number1/$number2; } ?> Bom: <?php function divide( $number1, $number2 ){ if( $number2 > 0 ){ return $number1/$number2; }else{ throw new Exception( ‘Impossível dividir por zero’ ); } } ?>
  • 11. Boas Práticas • Use e abuse das constantes. Ex.: Mau: <?php if( $article->getStatus() == 1 ){ echo “Matéria publicada”; } ?> Bom: <?php define( ‘PUBLISHED’, 1 ); if( $article->getStatus() == PUBLISHED ){ echo “Matéria publicada”; } ?>
  • 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 <[email protected]> */ final class Core extends Standard{ /** * Determina o ambiente de execução como WebSite. * @var int */ const WEB_SITE = 1; ?>
  • 13. Boas Práticas • Com o uso do PHPDoc, é possível gerar uma auto-documentação do seu sistema usando ferramentas livres, ou funcionalidades de editores como o Zend, por exemplo. • Veja um exemplo de documentação gerada automaticamente: Visualizar
  • 14. Boas Práticas Saiba mais sobre PHPDoc: http://phpdoc.org/ http://phpbrasil.com/artigo/zsFQt6foGtv7/2/phpdoc-documentando-bem-seu-codigo
  • 15. Boas Práticas Siga um padrão de código Que tal usar o Camel Case? Camel Case é um padrão largamente utilizado em diversas linguagens de programação, como Java, Ruby e Python, principalmente nas definições de Classes e Objetos. Ex.: class ExtranetUser { const USER_CONSTANT = ‘value’; private $id; public $Friends; function getId(){} }
  • 16. Boas Práticas Saiba mais sobre Camel Case: http://pt.wikipedia.org/wiki/CamelCase
  • 17. Boas Práticas Não faça tudo em um único script. Crie bibliotecas de funções ou desenvolva uma programação orientada a objetos. Exemplo de um site de jogos. Praticamente TODO o site está em um único script: categorias.php Se for programar procedural, que tal agregar as funções em comum em bibliotecas? Ex.: User.lib.php Comment.lib.php
  • 18. Boas Práticas Use 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. Programação Orientada a Objetos A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá 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ção Autor: Adilson da Silva Lima Publicação: 01 / 07 /2005 Edição: 1 Editora: Érica ISBN: 8536500700 Páginas: 82 Idioma: Português
  • 20. MVC Model-view-controller (MVC) é um padrão de arquitetura de software que preconiza a separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout.
  • 21. MVC Model – Representa o domínio View – Representa a interface ( página HTML, documento XML, Gráfico, etc ) Controller - Processa e responde a eventos, geralmente ações do usuário, e pode invocar 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. Dicas Acesse e leia SEMPRE o http://php.net Leitura (inglês ) : https://www.ibm.com/developerworks/library/os-php-read/ Aprenda inglês Codifique em inglês Acompanhe blogs, twitters e afins Ingresse numa comunidade php local Participe de listas Leia o código fonte de terceiros ( frameworks, classes, bibliotecas, etc )
  • 23. Dicas Faça um framework Seja humilde. Sempre há muito o que se aprender Abra a mente, leia livros não-técnicos Busque o autoconhecimento Use protetor solar 
  • 25. Agradecimentos À organização da PHP Conference 2009 Brasil em especial ao Galvão. A todos os participantes Contato: Orkut: http://www.orkut.com.br/Main#Profile?uid=17278396634072629091 Facebook: http://www.facebook.com/mvleandro Twitter: http://twitter.com/mvleandro MSN: [email protected] Gtalk: [email protected] Email: [email protected] Cel: 21-8211-9096