PHP: O Tolerável

junho 13, 2008

1<?
2 $var = Fruta;
3 echo “Eu gosto de comer {$var}; // retorna Eu gosto de comer Fruta 
4 ?>

Droga, Fruta era uma string e esqueci das aspas, agora vai dar erro de sintaxe.
Não tem problema! o PHP trata isso para você, primeiramente o interpretador tentará encontrar a constante Fruta, caso não encontre, ele converterá automaticamente para string.
Agora se existir tal constante, ele faz o esperado.
Segue exemplo abaixo: 

1 <?
2 define(“Fruta, “Laranja);
3 $var = Fruta;
4 echo “Eu gosto de comer {$var}; // retorna Eu gosto de comer Laranja
5 ?>

Isso também vale para arrays, quando você tenta acessar uma chave sem as devidas aspas você está acessando a constante.
Por exemplo:

1 $Array[teste] = Maça;

O PHP procura o valor da constante teste para setar como chave desse array, se não encontrar ocorre o mesmo procedimento, ele converte para string assim setando teste como chave do array.
Agora se você fizer:

1 define(teste, chegadeteste);
2 $Array[teste] = Maça;

Sua nova chave será chegadeteste.
Isso vale tanto para atribuição de valores como para recuperação.
Por isso tome cuidado, sempre que for utilizar uma string como chave de um array nunca se esqueça das aspas, pois se você não utilizar aspas e alguém definir uma constante com o mesmo nome, seu array pode se comportar de forma inesperada.

Sem contar que utilizando aspas corretamente você economiza processamento e evita que o PHP fique procurando por constantes para depois transformar em string.

[UPDATE]
Devido as muitas reclamações, segue a nota:
Nunca utilize essa técnica, estamos aqui somente para mostrar como funciona o interpretador do PHP. Essa é uma má prática de programação, além de poder gerar um E_NOTICE.
[/UPDATE]

Anúncios

5 Responses to “PHP: O Tolerável”

  1. Neto Says:

    Certamente você nunca trabalhou com gerenciamento de erros como php. Nunca criou um error handler e nem deve saber o que é um arquivo de log.
    Essa de tentar “encontrar uma solução”, gera Warnings, que dependendo da configuração do php.ini, podem exibir frases de erro na tela do usuário.

    Nunca devemos “deixar o php resolver”, devemos garantir que estará setado.

    A sorte de vocês é que o php é bem flexível, como se fosse uma mãe, nem tipado é. Se um cara desses pegar uma linguagem fortemente orienteda a objeto e tipada, um coitado desses nem sai do lugar, porque foi acostumado a programar numa Zona.

    • Danilo Akamine Says:

      Concordo com você que devemos corrigir tudo o que é lançado pelo error_reporting, porém não é essa a intenção do post.

      Corrigindo a asneira que você falou, isso vai gerar um E_NOTICE e não um E_WARNING, apesar de ser meio chato de ter isso na tela (se vc tiver com error_reporting bem configurado) esse “aviso” não quer dizer um ERRO.

      Agora não estou ensinando ninguém a programar, e sim mostrando como a linguagem PHP diferentemente das outras (como vc mesmo citou) é tolerável, afinal não é esse o título do post?
      Se estes conceitos fossem comum em outras linguagens é obvio que eu não estaria postando e perdendo meu tempo.
      A idéia do post é mostrar coisas curiosas que existem no PHP, não estou fazendo um post de boas práticas de programação.
      No meu conceito programar numa “Zona” é não conhecer arquitetura de software, não utilizar padrões de projeto, não documentar o projeto, etc, agora esquecer de colocar uma ASPA sendo que o próprio interpretador permite, pelo menos de deus, reveja seus conceitos.
      Nas últimas linhas do post você pode ver que não recomendo essa técnica, se é que você leu o post inteiro.

      Sinceramente eu ficaria bem mais feliz se vc simplesmente tivesse comentado: “avise o pessoal que isso pode gerar um notice para quem programa com error_reporting sem E_NOTICE”, teria sido bem mais feliz.

  2. Carlos Says:

    Concordo com o Neto, não podemos deixar que os bugs do php nos acoberte.
    É mais sensato contar com boa práticas de programação.

    • Lucas Says:

      Realmente, o php é fascinante.
      Mas, nada de se confiar na “moleza” que ele nos oferece.

      Concordo como o Neto e o Carlos, nada de ficar se aproveitando das falhas do php.

      • Marcos Sipon Says:

        É isso aí carlos, assino em baixo.

        “Não tem problema! o PHP trata isso para você”.

        Que que é isso rapaz?

        Coisa de relaxado essa de não verificar.
        Aqui onde eu trabalho, um log é algo preocupante.

        Tempos preocupação com os dados que estão sendo tratados, não lançamos à sorte dos bugs do php.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

%d blogueiros gostam disto: