10+ coisas que odeio em php
DESCRIPTION
Palestra que ministrei no II PHP Day do Espírito Santo na FAESA. Essa palestra tem como objetivo alertar aos PHPzeiros a importância de se conhecer a linguagem, ler mais a documentação e tomar cuidado ao codificar.TRANSCRIPT
1/20
10+ coisas que10+ coisas que odeio em PHPodeio em PHP
Almir 'm3nd3s' de AraújoCoordenador do Grupo PHP-ESJunior Level Linux Professional (LPIC-1)Desenvolvedor PHP desde 2005Entusiasta de Software Livre
2/20
Motivação
● Inspirado na: 10 Coisas que eu Odeio em Java (Rafael Santos)
● Erros comuns● Falhas de segurança● Falta de conhecimento● PHP é fácil
3/20
Segundo a Desciclopédia:
“PHP (Pqp,Hoje estou com Prequiça) é uma das sete linguagens de programação consideradas pela Igreja Católica como satânicas … . Acredita-se que foi criada com o único propósito de desvirtuar inocentes programadores e levá-los ao caminho do mal. O sujeito que se atreve a programar em PHP começa a perder gradativamente o conhecimento em outras linguagens, e passa a usar variáveis sem as declarar em qualquer linguagem.”
http://desciclo.pedia.ws/wiki/PHP
4/20
Não se assuste!
● PHP é uma linguagem muito poderosa● Suporte a inúmeros banco de dados● Comunicação com outros serviços utilizando
protocolos como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) e incontáveis outros.
● O PHP possui inúmeras extensões● Ótima documentação● PHP é fácil
● A intenção é informar e alertar
5/20
Quem usa PHP?
EU!EU!
6/20
Cronograma1/2
● Register globals e escopo de variáveis● Operador de controle de erro● Variáveis variáveis● Constantes automáticas● Casting e Auto Casting● Aspas, Apóstrofos e Crases● set_time_limit()● Modificadores de cabeçalho e “?>”
7/20
Cronograma2/2
● Cuidado com Inteiros “desconhecidos”● Comparações em PHP● Funções e seus Alias
8/20
Register Globals
● Obsoleto a partir do PHP 5.3.0● Removido do PHP 6.0.0● Desde a versão 4.2.0 definido como OFF● Não se confia em estranhos!● Com register_globals ativado é mais fácil
escrever códigos inseguros
9/20
Operador de Erro
● O PHP suporta um operador de controle de erro: o sinal 'arroba' (@)
● Qualquer mensagem de erro gerada por uma expressão será ignorada
● Uso inadequado● Prefira usar funções de Manipulação
de Erros e Logging, ou ao menos track_errors + $php_errormsg
10/20
Vaiáveis variáveis
● Uma variável variável pega o valor de uma variável e a trata como o nome de uma variável.
● O que dizer de arrays assim?
11/20
Constantes automáticas
● Já experimentou escrever algo como:
<?php echo 5 * kg * batata;?>
12/20
Casting e Autocasting
● PHP é como uma mãe● Pode acontecer por descuido● Dificilmente se faz isso por querer! (eu acho)● Caso clássico: patos, galinhas e pombo● Me diga o resultado de: 1 + "-1.3e3";
13/20
Aspas, Apóstrofos e Crases
● Você sabe a diferença?● Para que serve cada uma?
● Aspas (“)● Apóstrofo(')● Crase (`)
14/20
set_time_limit(0)
● Limita o tempo de execução do script● Se este limite é atingido, o script retorna um
erro fatal● Nunca! Eu disse NUNCA, nunca use
set_time_limit(0) sem que seja necessário!
15/20
Modificadores de Cabeçalho e a tag de fechamento do PHP
● A função header() é usada para enviar um raw HTTP header.
● Precisa ser chamada antes que qualquer saída tenha sido feita.
● É muito comum acontecer problemas quando usando includes.
● Para evitar alguns programadores costumam não “finalizar” o código PHP com “?>”
16/20
Cuidado com Inteiros “desconhecidos”
● Menos comum, mas pode virar uma pegadinha● Qual o resultado da seguinte soma em PHP: 07
+ 011?● E esta soma: 0x21 + 1?● Ok, ok! E essa então: 1 + 1e2● Ler a documentação é sempre
bom!
17/20
Comparações em PHP 1/2
● Responda o retorno das comparações abaixo:● 0 == “a”● “1” == “01”● “10” == “1e1”● Funções que retornam posição: strpos(),
array_search(), ...● Operador Idêntico● Operador Não Idêntico
18/20
Comparações em PHP 2/2
● Operadores de comparação: &&, || e and, or● Qual o resultado é impresso pelo var_dump()
para essas comparações:
$a = true && false;
$b = true and false;
var_dump($a, $b);
$c = true || false;
$d = true or false;
var_dump($c, $d);
19/20
Funções e Alias
● chop() e rtrim()● die() e exit()● doubleval() e floatval()● fputs() e fwrite()● ini_alter() e ini_set()● is_*()
20/20
That's All Folks