SlideShare uma empresa Scribd logo
1 de 25
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

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoNorton Guimarães
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
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
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCFlávio Lisboa
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2Cezar Souza
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1Norivan Oliveira
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework DjangoEduardo Palma
 

Mais procurados (20)

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
.NET e C# - Introdução Geral
.NET e C# - Introdução Geral.NET e C# - Introdução Geral
.NET e C# - Introdução Geral
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
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...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
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
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
Ap 04 05_10
Ap 04 05_10Ap 04 05_10
Ap 04 05_10
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework Django
 

Semelhante a Programando php com excelência

Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPAndréia Santos
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 

Semelhante a Programando php com excelência (20)

Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
Palestra
PalestraPalestra
Palestra
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Php
PhpPhp
Php
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Cake Php
Cake PhpCake Php
Cake Php
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Aula1
Aula1Aula1
Aula1
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 

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