Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos,
Uma pergunta sobre desempenho e melhores práticas. Olhem meu código abaixo e me digam se existe uma maneira mais inteligente de se obter o mesmo resultado. Essa classe funciona perfeitamente, porém queria saber se posso melhor ainda mais ela.
Minha Classe:
class buscaEncomenda {
public $hash;
public $erro = false;
public $erro_msg;
public $resultado;
public function __construct($code) {
if (preg_match('@[a-zA-Z0-9]{13}@', $code)) {
$this->fazBusca($code);
} else {
$this->erro = true;
$this->erro_msg = "Codigo invalido";
}
}
private function fazBusca($code) {
$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' => $code);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dados);
$xml = curl_exec($cURL);
curl_close($cURL);
$xml = simplexml_load_string($xml);
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['detalhe'] = 'Em trânsito para '.$evento->destino->local.' - '.$evento->destino->cidade.'/'.$evento->destino->uf;
}else{
$temp['detalhe'] = '-';
}
$this->resultado[] = (object) $temp;
$this->resultado = array_reverse($this->resultado);
}
}
}
$Obj = new buscaEncomenda('SZ705366815BR');
Um XML padrão que ela vai buscar:
<?xml version="1.0" encoding="iso-8859-1"?>
<sroxml>
<versao>1.0</versao>
<qtd>1</qtd>
<TipoPesquisa>Lista de Objetos</TipoPesquisa>
<TipoResultado>Todos os eventos</TipoResultado>
<objeto>
<numero>SZ705366815BR</numero>
<evento>
<tipo>BDE</tipo>
<status>01</status>
<data>01/12/2011</data>
<hora>18:33</hora>
<descricao>Entregue</descricao>
<recebedor></recebedor>
<documento></documento>
<comentario></comentario>
<local>CDD BAIRRO DE PINHEIROS</local>
<codigo>05427970</codigo>
<cidade>SAO PAULO</cidade>
<uf>SP</uf>
<sto>72407000</sto>
</evento>
<evento>
<tipo>OEC</tipo>
<status>01</status>
<data>01/12/2011</data>
<hora>09:30</hora>
<descricao>Saiu para entrega</descricao>
<local>CDD BAIRRO DE PINHEIROS</local>
<codigo>05427970</codigo>
<cidade>SAO PAULO</cidade>
<uf>SP</uf>
<sto>72407000</sto>
</evento>
<evento>
<tipo>RO</tipo>
<status>01</status>
<data>01/12/2011</data>
<hora>03:32</hora>
<descricao>Encaminhado</descricao>
<local>CTE JAGUARE</local>
<codigo>05314979</codigo>
<cidade>SAO PAULO</cidade>
<uf>SP</uf>
<sto>72618001</sto>
<destino>
<local>CDD BAIRRO DE PINHEIROS</local>
<codigo>05427970</codigo>
<cidade>SAO PAULO</cidade>
<bairro>PINHEIROS</bairro>
<uf>SP</uf>
</destino>
</evento>
<evento>
<tipo>RO</tipo>
<status>01</status>
<data>30/11/2011</data>
<hora>20:19</hora>
<descricao>Encaminhado</descricao>
<local>CTCE GOIANIA</local>
<codigo>74905970</codigo>
<cidade>GOIANIA</cidade>
<uf>GO</uf>
<sto>16752007</sto>
<destino>
<local>CTE JAGUARE</local>
<codigo>05314979</codigo>
<cidade>SAO PAULO</cidade>
<bairro>VILA LEOPOLDINA</bairro>
<uf>SP</uf>
</destino>
</evento>
<evento>
<tipo>RO</tipo>
<status>01</status>
<data>30/11/2011</data>
<hora>16:26</hora>
<descricao>Encaminhado</descricao>
<local>AC CANAA</local>
<codigo>74423970</codigo>
<cidade>GOIANIA</cidade>
<uf>GO</uf>
<sto>16302273</sto>
<destino>
<local>CTCE GOIANIA</local>
<codigo>74905970</codigo>
<cidade>GOIANIA</cidade>
<bairro>VILA BRASILIA</bairro>
<uf>GO</uf>
</destino>
</evento>
<evento>
<tipo>PO</tipo>
<status>09</status>
<data>29/11/2011</data>
<hora>17:07</hora>
<descricao>Postagem - DH</descricao>
<local>AC CANAA</local>
<codigo>74423970</codigo>
<cidade>GOIANIA</cidade>
<uf>GO</uf>
<sto>16302273</sto>
</evento>
</objeto>
</sroxml>Carregando comentários...