Buenas pessoal, depois de um tempo meio sem tempo pra postar, mudança nas prioridades e tudo mais, o Doctrine acabou ficando para um pouco depois, mas para cortar o silêncio que aqui se instaurou, vou aproveitar e postar uma classe na qual montei agora, muito simples, usa a API de um webservice gratuito de busca de dados de Geolocalização, bem simples mas pra mim ficou eficiente e rápido, espero que gostem.
<?php
/**
* Classe para busca de dados de geolocalização
* utiliza um webservice gratuito do iplocationtools.com
* utilizando o formato json como padrão, por ser mais leve e ágil para tratar
* @author André Gustavo Espeiorin <andregustavodocaqui@gmail.com>
* @version 1.0
* @package X
*
*/
class X_Location
{
/**
* Formato Padrão
* @var <string>
* @access private
*/
private $_format = 'json';
/**
* Endereço inicial para a pesquisa
* @var <string>
* @access private
*/
private $_queryUrl = 'http://iplocationtools.com/ip_query.php?ip=';
/**
* Objecto de consulta do CURLs
* @var <object>
* @access private
*/
private $_ch;
/**
* Dados tratados
* @var <array>
* @access private
*/
private $_data;
/**
* Construtor da Classe, recebe o parrametro <string> format
* Caso o paramêtro não seja passado, usa o padrão do sistema
* @return <void>
*/
public function __construct()
{
$this->_ch = curl_init();
}
/**
* Método que faz a consulta e tratamento dos dados, recebe o ip
* a ser consultado como parâmetro
* @param $ip
* @return <boolean>
*/
public function getData($ip)
{
if( isset($ip) && !empty($ip) ){
curl_setopt($this->_ch, CURLOPT_URL, $this->_queryUrl . $ip . '&output=' . $this->_format);
curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->_ch, CURLOPT_TIMEOUT, 15);
$request = curl_exec($this->_ch);
if( isset($request) && !empty($request) ){
$this->_data = json_decode($request, true);
return true;
} else{
return false;
}
} else{
return false;
}
}
/**
* Método utilizado para pegar os dados de _data, caso o keyName seja ignorado, retorna o array inteiro
* Aqui eu listo as chaves que podem ser buscadas:
* -Ip
* -Status
* -CountryCode
* -CountryName
* -RegionCode
* -RegionName
* -City
* -ZipPostalCode
* -Latitude
* -Longitude
* @param $paramName
* @return <array> | <string>
*/
public function get($keyName='')
{
if( isset($keyName) && !empty($keyName) ){
return $this->_data[$keyName];
}else{
return $this->_data;
}
}
}
Show, se a classe parece simples, imagine seu uso, abaixo pequeno exemplo:
$gl = new X_Location();
$gl->getData('seuIp');
echo $gl->get('City');
// ou
var_dump($gl->get());
Bom, espero que seja útil a todos, agradeço sua visita!
















Boa Class… seu site já está nos meus feeds
opa, se eu não em engano esse webservice foi tirado do ar há um tempinho, pretendo montar uma outra alternativa