SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano Ramalho
 
As cinco etapas da programação
As cinco etapas da programaçãoAs cinco etapas da programação
As cinco etapas da programaçãoClausia Antoneli
 
Depurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIDepurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIJefferson Girão
 
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Jefferson Girão
 
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoRuby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoWeverton Timoteo
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?Leonardo Gomes
 
Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1lfernandomcj
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1Marcio Pinto
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Action script1 apresentação2
Action script1 apresentação2Action script1 apresentação2
Action script1 apresentação2Jorge Louro
 

La actualidad más candente (20)

Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
 
JAVA - Controle de programa
JAVA - Controle de programaJAVA - Controle de programa
JAVA - Controle de programa
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
As cinco etapas da programação
As cinco etapas da programaçãoAs cinco etapas da programação
As cinco etapas da programação
 
Depurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIDepurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP II
 
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
 
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoRuby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?
 
Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
6 excecoes
6 excecoes6 excecoes
6 excecoes
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Action script1 apresentação2
Action script1 apresentação2Action script1 apresentação2
Action script1 apresentação2
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
2 controle-de-fluxo
2 controle-de-fluxo2 controle-de-fluxo
2 controle-de-fluxo
 

Destacado

Paradigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHPParadigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHPFabio Leal
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013Evaldo Junior
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1Norivan Oliveira
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 

Destacado (6)

Paradigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHPParadigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHP
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 

Similar a 10+ Coisas Que Odeio Em Php

M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaJonata Weber
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7Silvano Oliveira
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHPVinícius Krolow
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
SIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPSIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPJonata Weber
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPiMasters
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 

Similar a 10+ Coisas Que Odeio Em Php (20)

Guia php
Guia phpGuia php
Guia php
 
Php m18
Php m18Php m18
Php m18
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
PHP-CLI em 7 passos
PHP-CLI em 7 passosPHP-CLI em 7 passos
PHP-CLI em 7 passos
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHP
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
SIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPSIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHP
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHP
 
Qual linguagem escolher?
Qual linguagem escolher?Qual linguagem escolher?
Qual linguagem escolher?
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 

Más de Almir Mendes

Software Livre, que história é essa?
Software Livre, que história é essa?Software Livre, que história é essa?
Software Livre, que história é essa?Almir Mendes
 
[Rock'n Rails] Deploying Rails Applications with Capistrano
[Rock'n Rails] Deploying Rails Applications with Capistrano[Rock'n Rails] Deploying Rails Applications with Capistrano
[Rock'n Rails] Deploying Rails Applications with CapistranoAlmir Mendes
 
Projeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAIProjeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAIAlmir Mendes
 
Palestra "Do PHP ao Rails" - FOCAI
Palestra "Do PHP ao Rails" - FOCAIPalestra "Do PHP ao Rails" - FOCAI
Palestra "Do PHP ao Rails" - FOCAIAlmir Mendes
 
Deploying Rails Applications with Capistrano
Deploying Rails Applications with CapistranoDeploying Rails Applications with Capistrano
Deploying Rails Applications with CapistranoAlmir Mendes
 
Arduino Project - Ciclo de palestras CEET Vasco Coutinho
Arduino Project - Ciclo de palestras CEET Vasco CoutinhoArduino Project - Ciclo de palestras CEET Vasco Coutinho
Arduino Project - Ciclo de palestras CEET Vasco CoutinhoAlmir Mendes
 
Palestra "Do PHP ao Rails"
Palestra "Do PHP ao Rails"Palestra "Do PHP ao Rails"
Palestra "Do PHP ao Rails"Almir Mendes
 
Arduino Project :: Giran Siege
Arduino Project :: Giran SiegeArduino Project :: Giran Siege
Arduino Project :: Giran SiegeAlmir Mendes
 
Integração contínua com Hudson CI
Integração contínua com Hudson CIIntegração contínua com Hudson CI
Integração contínua com Hudson CIAlmir Mendes
 
Palestra sobre AWK [Giran Siege]
Palestra sobre AWK [Giran Siege]Palestra sobre AWK [Giran Siege]
Palestra sobre AWK [Giran Siege]Almir Mendes
 
Palestra de SED - Stream Editor
Palestra de SED - Stream EditorPalestra de SED - Stream Editor
Palestra de SED - Stream EditorAlmir Mendes
 
Distribuições Linux
Distribuições LinuxDistribuições Linux
Distribuições LinuxAlmir Mendes
 
Entendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalEntendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalAlmir Mendes
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 

Más de Almir Mendes (19)

Software Livre, que história é essa?
Software Livre, que história é essa?Software Livre, que história é essa?
Software Livre, que história é essa?
 
Arduino Project
Arduino ProjectArduino Project
Arduino Project
 
[Rock'n Rails] Deploying Rails Applications with Capistrano
[Rock'n Rails] Deploying Rails Applications with Capistrano[Rock'n Rails] Deploying Rails Applications with Capistrano
[Rock'n Rails] Deploying Rails Applications with Capistrano
 
Projeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAIProjeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAI
 
Palestra "Do PHP ao Rails" - FOCAI
Palestra "Do PHP ao Rails" - FOCAIPalestra "Do PHP ao Rails" - FOCAI
Palestra "Do PHP ao Rails" - FOCAI
 
Deploying Rails Applications with Capistrano
Deploying Rails Applications with CapistranoDeploying Rails Applications with Capistrano
Deploying Rails Applications with Capistrano
 
Dicas de SSH
Dicas de SSHDicas de SSH
Dicas de SSH
 
Arduino Project - Ciclo de palestras CEET Vasco Coutinho
Arduino Project - Ciclo de palestras CEET Vasco CoutinhoArduino Project - Ciclo de palestras CEET Vasco Coutinho
Arduino Project - Ciclo de palestras CEET Vasco Coutinho
 
Palestra "Do PHP ao Rails"
Palestra "Do PHP ao Rails"Palestra "Do PHP ao Rails"
Palestra "Do PHP ao Rails"
 
Arduino Project :: Giran Siege
Arduino Project :: Giran SiegeArduino Project :: Giran Siege
Arduino Project :: Giran Siege
 
Integração contínua com Hudson CI
Integração contínua com Hudson CIIntegração contínua com Hudson CI
Integração contínua com Hudson CI
 
Palestra sobre AWK [Giran Siege]
Palestra sobre AWK [Giran Siege]Palestra sobre AWK [Giran Siege]
Palestra sobre AWK [Giran Siege]
 
Palestra de SED - Stream Editor
Palestra de SED - Stream EditorPalestra de SED - Stream Editor
Palestra de SED - Stream Editor
 
Palestra regex
Palestra regexPalestra regex
Palestra regex
 
Palestra regex
Palestra regexPalestra regex
Palestra regex
 
Palestra de PDO
Palestra de PDOPalestra de PDO
Palestra de PDO
 
Distribuições Linux
Distribuições LinuxDistribuições Linux
Distribuições Linux
 
Entendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoalEntendendo como fazer um firewall pessoal
Entendendo como fazer um firewall pessoal
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 

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. Quem usa PHP? EU! 5/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