Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fiz essa classe logo abaixo para rastrear objetos nos correios e gostaria de dicas que possam melhorar ainda + ela.
<?php
/**
* Classe de busca no site oficial dos correios responsavel por validar
* e tratar os erros ralacionados ao objeto.
*
*/
class Correios {
/**
* Variavel que armazena um hash em MD5 para facilitar a analise de alteracoes de status.
* @var $hash
*/
public $hash;
/**
* Variavel que controla o fluxo de erros no programa.
* @name $erro
*/
public $erro = FALSE;
/**
* Variavel que recebe a descricao do erro.
* @name $erro_msg
*/
public $erro_msg;
/**
* Variavel com status atual da encomenda.
* @name $status
*/
public $status;
/**
* Variavel que contem o array com o resultado da busca.
* @name $resultado
*/
public $resultado = array();
/**
* Guarda a primeira data do pacote no sistema dos correios.
* @name $dataFinal
*/
public $dataFinal;
/**
* Construtor que valida o codigo passado pelo usuario e chama o metodo que realiza a busca.
*
* @param $objeto Codigo fornecido pelo usuario para realizar a busca.
*
*/
public function __construct($objeto) {
if (preg_match('/^[a-zA-Z]{2}[0-9]{9}[a-zA-Z]{2}$/', $objeto)) {
$this->fazBusca($objeto);
} else {
$this->erro = TRUE;
$this->erro_msg = 'Código inválido';
}
}
/**
* Funcao que realizar um POST no webservice dos correios e retorna um XML com os dados da encomenda.
*
* @param string $objetoValido Codigo da encomenda ja validado
*
*/
private function fazBusca($objetoValido) {
$cURL = curl_init('http://websro.correios.com.br/sro_bin/sroii_xml.eventos');
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, TRUE);
$dados = array('Usuario' => 'ECT', 'Senha' => 'SRO', 'Tipo' => 'L', 'Resultado' => 'T', 'Objetos' => $objetoValido);
curl_setopt($cURL, CURLOPT_POST, TRUE);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dados);
$xml = curl_exec($cURL);
curl_close($cURL);
$this->hash = md5($xml);
$xml = simplexml_load_string($xml);
if (!$xml->error) {
$this->status = $xml->objeto->evento->descricao;
foreach ($xml->objeto->evento as $evento) {
$temp['DATA'] = $evento->data . ' ' . $evento->hora;
$temp['LOCAL'] = $evento->local . ' ' . $evento->cidade . ' ' . $evento->uf;
$temp['ACAO'] = $evento->descricao . '';
if ($evento->destino) {
$temp['DETALHES'] = 'Em trânsito para ' . $evento->destino->local . ' - ' . $evento->destino->cidade . '/' . $evento->destino->uf;
} else {
$temp['DETALHES'] = '-';
}
$this->resultado[] = $temp;
$this->dataFinal = $evento->data;
}
$this->resultado = array_reverse($this->resultado);
} else {
$this->erro = TRUE;
$this->erro_msg = 'Código não encontrado';
}
}
}
Qualquer tipo de crítica será bem vindo. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif&key=f16394cbddc7140988e95da40d87cdc04e8fd18618efd400ded17391eb1801ce" alt="thumbsup.gif" />
Carregando comentários...