Frameworks

O que é um Framework? Para que serve?

Na maioria das vezes, aqui no blog, eu me dedico a explicar algumas funções bastante específicas de uma ou outra tecnologia. Porém, há alguns dias, recebi um comentário em algum dos meus posts que indagava, entre outras coisas, “o que é um framework?“.

Dessa forma, decidi que seria interessante desenvolver uma postagem explicando o que são frameworks PHP e como eles funcionam. Espero que essa postagem possa ser útil e ajude a tirar dúvidas.

O que é um framework?

Framework é um conjunto de códigos abstratos e/ou genéricos, geralmente classes, desenvolvidos em alguma linguagem de programação, que relacionam-se entre si para disponibilizar funcionalidades específicas ao desenvolvedor de software. Em outras palavras, é como uma caixa de ferramentas, um kit que possui diversas funcionalidades devidamente implementadas, testadas e prontas para serem utilizadas no construção de softwares, poupando ao desenvolvedor tempo e trabalho na elaboração de operações básicas como acesso a banco de dados, sistema de templates, mapeamento de rotas e validação de dados.

Os frameworks costumam ser divididos em módulos que podem ser interdependentes ou não. Isso quer dizer que, dependendo do framework utilizado, você poderá utilizá-lo apenas em sua totalidade, com todos os seus aparatos, ou então pode haver a possibilidade de utilização de apenas as partes necessárias. Continue Lendo

Filtragem de dados

Filtrando e validando dados no PHP com filter_var()

O assunto de hoje é segurança. É bastante comum o seguinte cenário: o programador precisa validar um e-mail e vai para o Google e digita “expressão regular para validar e-mail” ou então “como validar e-mail com PHP”. O que acontece nesse caso? Somos soterrados por uma infinidade de informações e ficamos sem saber exatamente o que irá nos servir.

Contudo, desde a versão 5.2 do PHP está disponível a função filter_var(). Seu objetivo é filtrar e validar informações dentro do PHP. No artigo de hoje, vou realizar um estudo sobre as peculiaridades dessa função e mostrar como é fácil utilizá-la para aumentar a segurança de sua aplicação.

Validate e Sanitize

Os filtros dividem-se em dois tipos: validate e sanitize. Gosto de traduzi-los como validação e limpeza, respectivamente. O objetivo dos filtros de validação (validate) é verificar se determinado valor corresponde a um padrão previamente especificado. Já os filtros de limpeza (sanitize) irão retirar caracteres que não correspondam ao padrão permitido.

Cada filtro possui uma constante correspondente. No capítulo de filtros do manual do PHP é possível encontrar uma lista completa com todos os filtros disponíveis.

A função filter_var() obedece ao seguinte protótipo:

mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

Sendo assim, o único parâmetro obrigatório é o primeiro, que indica o valor a ser filtrado. Porém, o filtro padrão é não aplicar filtro nenhum. Dessa forma, pra que ocorra de fato uma filtragem, é necessário especificar o segundo parâmetro. Continue Lendo

php7-logo

Lançado o PHP 7.0.1

Foi publicada ontem (17/12) a primeira release do PHP 7 desde o seu lançamento, há duas semanas.

Essa atualização é altamente recomendada para quem já estiver utilizando o PHP 7 em produção, pois contém diversos bugfixes.

A lista de mudanças no core, publicadas no site, são as seguintes: Continue Lendo

O que não fazer no PHP 7

10 coisas para não fazer no PHP 7

Com o lançamento do PHP 7, surge a oportunidade de podermos, de certa forma, melhorarmos algumas práticas que vínhamos executando.

Neste post estão reunidas algumas “manias” que é melhor deixarmos de lado para poder aproveitar tudo que de melhor o PHP tem a nos oferecer.

1. Não utilize funções mysql_*

Finalmente chegou o tempo em que não seremos mais apenas orientados a não utilizar as funções mysql_*. No PHP 7 essas funções foram retiradas, o que significa que você terá que mudar para as funções (muito melhores, por sinal) mysqli_*, ou então utilizar alternativas melhores ou mais flexíveis como PDO ou um ORM.

2. Evite desperdício de código

Em outras palavras: não escreva código inútil que desperdice o desempenho. Na verdade, a velocidade no PHP 7 aumentou tanto que pode esconder alguns problemas na arquitetura da aplicação. Não se satisfaça com o desempenho da sua aplicação só porque o PHP 7 a tornou mais rápida. Continue Lendo

Imagem de Geolocalização

Como modificar ou forjar geolocalização no navegador

Fala, galera! Tudo certinho?

Continuando meus estudos em cima da API do Google Maps (o último post foi sobre como encontrar coordenadas de locais próximos usando SQL), acabei encontrando uma dificuldade: como fazer o navegador pensar que estou em outro lugar?

Dando uma olhada nas Ferramentas de Desenvolvedor do Google Chrome descobri que é possível emular geolocalização utilizando coordenadas definidas pelo usuário. Pesquisei um pouco mais e descobri também como forjar a geolocalização no Firefox. Agora eu conto pra vocês como funciona!

Como os browsers detectam minha localização?

Com o advento do HTML5, tornou-se possível obter as coordenadas geográficas de quem está usando o navegador por meio de uma requisição JavaScript bastante simples: navigator.geolocation.getCurrentPosition().

Contudo, o usuário pode escolher se irá aceitar ou não compartilhar essas informações. Continue Lendo

Google Maps

Como procurar locais próximos usando SQL

E aí, galera! Tudo certo?

Estou fazendo alguns estudos com a API do Google Maps e isso me levou pensar de que maneira é possível encontrar endereços próximos utilizando SQL. Conduzindo minhas pesquisas, encontrei algumas coisas e gostaria de compartilhar.

Antes de mais nada, a Fórmula de Haversine!

Você deve estar se perguntando: o que diabos é Fórmula de Haversine? Não tema, pois a resposta está aqui!

A fórmula de Haversine é uma importante equação usada em navegação, fornecendo distâncias entre dois pontos de uma esfera a partir de suas latitudes e longitudes. É um caso especial de uma fórmula mais geral de trigonometria esférica, a lei dos Haversines, relacionando os lados a ângulos de uma esfera “triangular”.

Fonte: Wikipedia – Fórmula de Haversine

Basicamente, essa fórmula serve para fazer uma triangulação em uma esfera e ajuda encontrar pontos próximos de determinada coordenada geográfica. Leia mais sobre ela no artigo da Wikipedia.

Montando a consulta de triangulação

De posse da fórmula, precisamos convertê-la em SQL. Com base em um estudo disponibilizado na própria documentação da API do Google Maps, fiz algumas adaptações e montei a estrutura que apresento a seguir.

O primeiro passo é montar a tabela que irá armazenar os dados referente aos endereços. Para este exemplo, vamos utilizar uma tabela bastante simples, contendo apenas idnomeenderecolat (latitude) e lng (longitude). O endereço, neste caso, serve muito mais para complementação dos dados (ou para uma eventual busca pela geolocalização) do que propriamente para o cálculo. Continue Lendo