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.
1. 10+ coisas que
odeio em PHP
Almir 'm3nd3s' de Araújo
Coordenador do Grupo PHP-ES
Junior Level Linux Professional (LPIC-1)
Desenvolvedor PHP desde 2005
Entusiasta de Software Livre
1/20
2. 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
2/20
3. 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 3/20
4. 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
4/20
6. 1/2
Cronograma
●
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 “?>”
6/20
7. Cronograma 2/2
●
Cuidado com Inteiros “desconhecidos”
●
Comparações em PHP
● Funções e seus Alias
7/20
8. 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
8/20
9. 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
9/20
10. 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?
10/20
11. Constantes automáticas
●
Já experimentou escrever algo como:
<?php
echo 5 * kg * batata;
?>
11/20
12. 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";
12/20
13. Aspas, Apóstrofos e Crases
●
Você sabe a diferença?
●
Para que serve cada uma?
●
Aspas (“)
● Apóstrofo(')
● Crase (`)
13/20
14. 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!
14/20
15. 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 “?>”
15/20
16. 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!
16/20
17. 1/2
Comparações em PHP
●
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
17/20
18. 2/2
Comparações em PHP
●
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);
18/20
19. Funções e Alias
●
chop() e rtrim()
●
die() e exit()
● doubleval() e floatval()
● fputs() e fwrite()
● ini_alter() e ini_set()
● is_*()
19/20