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
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
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
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
Quem usa PHP?




          EU!   5/20
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
Cronograma     2/2


●
    Cuidado com Inteiros “desconhecidos”
●
    Comparações em PHP
●   Funções e seus Alias




                                           7/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



                                                8/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

                                               9/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?




                                                10/20
Constantes automáticas
●
    Já experimentou escrever algo como:

    <?php
       echo 5 * kg * batata;
    ?>




                                          11/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";




                                                     12/20
Aspas, Apóstrofos e Crases
●
    Você sabe a diferença?
●
    Para que serve cada uma?
    ●
        Aspas (“)
    ●   Apóstrofo(')
    ●   Crase (`)




                                      13/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!




                                                 14/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 “?>”

                                                15/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!


                                                   16/20
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
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
Funções e Alias
●
    chop() e rtrim()
●
    die() e exit()
●   doubleval() e floatval()
●   fputs() e fwrite()
●   ini_alter() e ini_set()
●   is_*()


                                  19/20
That's All Folks




                   20/20

10+ Coisas Que Odeio Em Php

  • 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
  • 5.
  • 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 eCrases ● 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çalhoe 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
  • 20.