Postagens

Mostrando postagens de março, 2013

PHP - Utilizando o pathinfo ao invés de explode para tratar urls e caminhos de arquivos

Muitas vezes temos de tratar uma URL a fim de capturar o nome de um arquivo, uma extensão, um caminho, etc É comum utilizar a função explode() para fazer isto: <?php $url = "http://byteseveryday.blogspot.com.br/2012/09/php-classes-genericas-com-varios-niveis.html"; $pedacos = explode('/',$url); var_dump($pedacos); Como resultado teremos array(6) {   [0]=>   string(5) "http:"   [1]=>   string(0) ""   [2]=>   string(29) "byteseveryday.blogspot.com.br"   [3]=>   string(4) "2012"   [4]=>   string(2) "09"   [5]=>   string(44) "php-classes-genericas-com-varios-niveis.html" } Veja que apenas conseguimos "expodir" os elementos entre '/'. Se quisermos reconstruir um caminho ou mesmo saber qual a extensão de um arquivo teriamos de fazer algumas novas intervenções <?php $url = "http://byteseveryday.blogspot.com.br/2012/09/php-classes-gene...

PHP - Testando se uma constante foi setada através do defined()

As constantes em linguagem de programação são importantes pois geralmente são variáveis globais, acessíveis diretamente dentro de qualquer função ou método dentro do escopo do programa. Muitas vezes é importante saber se uma variável foi setada para que possamos fazer um tratamento de erro adequado. Normalmente testamos se uma variável foi setada utilizando o isset() <?php $variavel = 1; var_dump(isset($variavel)); O comando acima retorna bool(true) Porém, se tentarmos fazer o mesmo com uma constante (lembrando que por padrão é sempre interessante criar as constantes com todos os caracteres em caixa alta) <?php define(VARIAVEL2,2); var_dump(isset('VARIAVEL2')); O comando acima deve retornar a seguinte mensagem: "Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING" Para testarmos uma constante devemos utilizar uma função específica, defined(): <?php define(VARIAVEL2,2); var_dump(defined('VARIAVEL2')); A...

PHP - Buffer/Buffering - Controle de Saída ob_start(), ob_get_contents() e ob_end_clean()

Controle de saída em PHP é muito interessante, principalmente quando trabalhamos com Curl ou quando queremos que uma página seja exibida apenas quando todo seu conteúdo foi processado. Esta dica é bem rápida. Pretendo no futuro postar algo mais completo. Utilizaremos as funções de Buffer do PHP. Vamos aos exemplos então: <?php echo 'Saida'; A instrução acima retornaria 'Saida' Mas vamos supor que não queremos esta saída e, sim, guardar a informação dentro de uma variável. Para isto usamos um buffer. <?php ob_start(); echo 'Saida'; $output = ob_get_contents(); ob_end_clean(); Este script não retorna valor pois apontamos a saída para a variável $output. Aqui ob_start() inicia o buffer, gravando tudo que é enviado para a saída padrão. ob_get_contents() joga tudo que foi gravado no buffer até aquele ponto dentro de uma variável e ob_end_clean() encerra a gravação e limpa o buffer. Assim podemos aproveitar a variável $output para efe...

Mobile - Detectando se o dispositivo é mobile ou não por php e javascript

Se antigamente nosso problema era saber se a meia duzia de browsers rodaria direito nosso javascript ou não (o que o JQuery resolveu para nós) hoje temos uma fauna gigantesca de dispositivos e browsers, fruto da expansão do mobile. Nosso desafio é conseguir detectar que dispositivo está acessando o site ou aplicação e redirecionar o usuário para uma página ou URL que possua as configurações e layout corretos para o mesmo. Existem algumas linhas de pensamento que acreditam que o que deve se adaptar automaticamente às dimensões do dispositivo é o css, sem muita ou nenhuma interferência de detecção (design responsivo) como a que proponho aqui, porém eu prefiro utilizar a abordagem da detecção e de versões diferentes do site para dispositivos mobile e web convencional, pois acredito que o problema não é somente o layout mas também o peso da navegação, o tipo de conteúdo direcionado e etc. Há um bom tempo que venho pesquisando um meio bacana de fazer isto, que fosse confiável e que n...