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

PPTX
C# 6.0 .net coders
PDF
Desenvolvimento web ágil com python e web2py
ODP
Entendendo Framework Web com Python
PPTX
Programação Dinâmica para Web - Aula 2
PDF
Aula03 PHP - Estruturas Condicionais
PDF
PHP: Linguagem + Mysql + MVC + AJAX
PDF
JavaFX 1.2
C# 6.0 .net coders
Desenvolvimento web ágil com python e web2py
Entendendo Framework Web com Python
Programação Dinâmica para Web - Aula 2
Aula03 PHP - Estruturas Condicionais
PHP: Linguagem + Mysql + MVC + AJAX
JavaFX 1.2

Mais procurados (20)

PPTX
C# 6.0 - Novos Recursos (Agosto/2015)
PDF
Palestra - Symfony Framework MVC PHP 5
PPTX
PDF
Aula 02 - Introdução ao PHP
ODP
Curso Linguagem de Programação I - PHP Básico
PPTX
.NET e C# - Introdução Geral
PPTX
Introdução C#
PDF
Seu framework é melhor pra quê?
KEY
Orientação a Objetos com PHP
PDF
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
PDF
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
PDF
PHP Turbinado com CodeIgniter - Conisli 2011
PDF
Começando com Zend Framework 2
PDF
Django - A sua cápsula de soluções web em python
PPTX
Aula 01 introdução ao php
ODP
Introdução ao framework CodeIgniter
PPS
CURSO DE PHP PARA INICIANTES - AULA 1
PPT
Php FrameWARks - sem CakePHP
PDF
Ap 04 05_10
PPT
Introdução ao framework Django
C# 6.0 - Novos Recursos (Agosto/2015)
Palestra - Symfony Framework MVC PHP 5
Aula 02 - Introdução ao PHP
Curso Linguagem de Programação I - PHP Básico
.NET e C# - Introdução Geral
Introdução C#
Seu framework é melhor pra quê?
Orientação a Objetos com PHP
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
PHP Turbinado com CodeIgniter - Conisli 2011
Começando com Zend Framework 2
Django - A sua cápsula de soluções web em python
Aula 01 introdução ao php
Introdução ao framework CodeIgniter
CURSO DE PHP PARA INICIANTES - AULA 1
Php FrameWARks - sem CakePHP
Ap 04 05_10
Introdução ao framework Django
Anúncio

Semelhante a Programando php com excelência (20)

PDF
PHP, Mercado e Certificações
PPTX
Apresentação faef
PPT
Apresentação faef
PDF
Serversidephp pptx2-120418140114-phpapp01
PDF
Dicas para sua carreira de Desenvolvedor PHP
PPTX
Seja um júnior não seja um sobrinho
PDF
PHP 5 de Forma Correta e Segura
PPTX
Desenvolvimento Web com PHP - Aula 3
PDF
Programando Melhor - Flisol
PDF
PHP - Uma Pequena Introducao
PPTX
Fundamentos da Programação PHP OO - Aula 1
PDF
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
PDF
Curso de PHP - Objetos
PDF
O programador php
PDF
O programador php
PDF
Php Conf08 Refactoring
PPTX
Fundamentos da Programação PHP OO - Aula 3
PDF
PHP Anti Patterns
PDF
PHP Jedi - Boas Práticas e Alta Performance
PDF
PHP - Programação para seres humanos
PHP, Mercado e Certificações
Apresentação faef
Apresentação faef
Serversidephp pptx2-120418140114-phpapp01
Dicas para sua carreira de Desenvolvedor PHP
Seja um júnior não seja um sobrinho
PHP 5 de Forma Correta e Segura
Desenvolvimento Web com PHP - Aula 3
Programando Melhor - Flisol
PHP - Uma Pequena Introducao
Fundamentos da Programação PHP OO - Aula 1
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Curso de PHP - Objetos
O programador php
O programador php
Php Conf08 Refactoring
Fundamentos da Programação PHP OO - Aula 3
PHP Anti Patterns
PHP Jedi - Boas Práticas e Alta Performance
PHP - Programação para seres humanos
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 <mvleandro@gmail.com> */ 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: marcus_leandro@hotmail.com Gtalk: mvleandro@gmail.com Email: mvleandro@gmail.com Cel: 21-8211-9096