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!















