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
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(){}
}
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