Академический Документы
Профессиональный Документы
Культура Документы
#6 DICAS
AVANADAS DE PHP
Introduo
Simples, porm eficiente!
Essa a ideia que tento trazer para a construo do ebook. Apresento aqui 6 dicas
avanadas de PHP.
Espero que esse documento possa agregar novas ideias na sua vida de desenvolvedor.
www.dicasdephp.com.br
1
#1 Segurana: Proteja a sua aplicao
Antes de mais nada, o desenvolvedor deve preocupar-se em dar um passo atrs e olhar
toda aplicao. Poderamos ter uma explicao mais longa de como todo o funcionamento
do SQL Injection, mas o que o desenvolvedor deve saber: N
unca confie em dados que
voc recebe de outro lugar.
muito importante, sempre, escapar as informaes que voc recebe dentro da aplicao.
A principal causa de SQL Injection o descuido na hora de exibir as informaes para os
usurios.
<?php
$query = "SELECT *
FROM usuarios
?>
Sem validar o que est sendo enviado pelo usurio atravs do $_POST, poderemos expor
todo o banco de dados da nossa aplicao. Ainda normal, ao prestamos consultoria em
sistemas existentes, encontrar esse tipo de falha de segurana.
Enviar um valor diretamente para o banco de dados, sem antes realizar uma validao tipo
de contedo e escapar os caracteres um dos erros primrios da programao.
www.dicasdephp.com.br
2
Um exemplo de cdigo com mais segurana teremos abaixo:
<?php
$clean = array();
$sql = array();
if (ctype_alpha($_POST['nome'])) {
$clean['nome'] = $_POST['nome'];
} else {
$sql['nome'] = mysql_real_escape_string($clean['nome']);
$query = "SELECT *
FROM usuarios
?>
www.dicasdephp.com.br
3
#2 Aprenda sobre DRY
OK, essa no apenas uma dica sobre PHP, mas sobre desenvolvimento de aplicaces no
geral. Aprenda a utilizar DRY na sua vida de d
eveloper.
DRY um acrnimo para "Don't repeat yourself". O conceito de DRY prope, tentando
simplific-lo, que cada poro de conhecimento em um sistema deve possuir uma
representao nica, de autoridade e livre de ambiguidades em todo o sistema.
Com o DRY em prtica, voc ir aumentar a produtividade em 10x, 20x, 30x Seja esperto
e no repita o cdigo milhares de vezes!
www.dicasdephp.com.br
4
#3 Memcached
Sabe lidar com cache? No? Ento est na hora de aprender como usar.
Um dos mais usados com PHP o Memcached. Sua principal funo evitar a sobrecarga
e repetio de consultas no banco de dados.
Para cada vez que uma pgina com PHP e banco de dados requisitada, necessrio ir
at o banco de dados para retornar o contedo o browser. Agora imagina, se no h
alterao de contedo, a consulta at o banco de dados DESNECESSRIA.
Vamos trabalhar com o cache para consultas no banco de dados, com isso a requisio
ser salva e usada antes de ir at o banco de dados.
www.dicasdephp.com.br
5
APC
Outro cache muito utilizado com PHP o APC. Com APC, possvel realizar cache de
consultas no banco de dados, compilar scripts PHP (com isso, no necessrio interpretar
o script a cada requisio) ou salvar informaes por tempo determinado. Considere o
exemplo abaixo:
<?php
$feed = apc_fetch('clima');
$feed = file_get_contents('http://climatempo.com.br/sao-paulo.xml');
?>
Imagine que, conforme o exemplo acima, no ser necessrio fazer uma consulta remota a
cada requisio, tornando a execuo muito mais rpida!
bvio que voc deve alterar o TTL (time to live) do cache, conforme a necessidade da sua
aplicao.
www.dicasdephp.com.br
6
#4 Use Framework
Sabe qual o motivo de usar um framework? Bem, economize no tempo e tenha suporte do
mundo todo!
bvio que gostaramos de desenvolver um f ramework do zero. Mas isso daria um trabalho
imenso, e talvez o resultado no seria o mesmo que encontramos a poucos clicks, pois
requerem muito recurso para tornar-se uma ferramenta completa.
Hoje, se voc utiliza alguma das ferramentas abaixo, ir encontrar a soluo para qualquer
problema no Stack Overflow, sem gastar muito tempo.
CodeIgniter;
Lavarel;
Zend;
Magento;
Wordpress;
Slim;
CakePHP;
Symfony;
e lista imensa...
www.dicasdephp.com.br
7
#5 No use funes em loops
Voc no deve usar funes nas chamadas de loops. Sabe porqu? simples, a cada item
do loop, sua funo ser chamada novamente!
Veja nos exemplos abaixo, a diferena no tempo de requisio para cada uma delas. Alm
da quantidade maior de requisio, existe a diferena de processamento do servidor,
evitando uma sobrecarga em caso de muitos acessos sobre o script.
Metdo #1 (ruim)
<?php
$nomes = array(
"Clementine Douglas",
"Ivana Norris",
"Brianna Reeves",
...
"Bertha Butler",
"Nora Hatfield",
"Serena Gates",
);
// a cada vez que o loop for exec, o count() ser executado de novo;
?>
www.dicasdephp.com.br
8
Mtodo #2 (timo)
<?php
$nomes = array(
"Clementine Douglas",
"Ivana Norris",
"Brianna Reeves",
...
"Bertha Butler",
"Nora Hatfield",
"Serena Gates",
);
$total = count($nomes); // faa a contagem uma vez, pois ela no vai ser atualizada a cada
iterao do looping.
?>
www.dicasdephp.com.br
9
#6 Usando pacotes no PHP
O uso de uma ferramenta para gerenciar as dependncias para o PHP vem ganhando muito
espao entre desenvolvedores e tornando indispensvel.
Com poucos comandos possvel definir todos as bibliotecas necessrias para o seu
projeto. Ele ficar responsvel por baixar e gerenciar todos os pacotes e configurar seu
arquivo de autoloader.
O conceito
O conceito que ele permite que voc declare as bibliotecas de seu projeto, e que assim
ele ir assumir o gerenciamento (instalao/atualizao)-los para voc.
Com isso, a instalao e atualizao de novas bibliotecas ficar muitoooo mais fcil. Com
alguns comandos no terminal, no caso de Linux e OS x, voc manter o projeto atualizado
com as dependncias.
Para quem j tem experincia com Linux, ir lembrar muito os comandos de apt-get dos
sistemas Debian/Ubuntu.
Como Funciona
Se ficou com curiosidade de como isso funciona, acesse o blog e veja um tutorial de como
instalar e utilizar Composer.
www.dicasdephp.com.br
10
Feedback
Obrigado por baixar e ler o ebook. Quero saber o que voc achou sobre o contedo. Para
isso, envie um e-mail para fausto@dicasdephp.com.br e vamos conversar!
Quanto mais crticas receber, melhor ser o trabalho na construo de novos ebooks.
www.dicasdephp.com.br
11