Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Batista Neto

[Resolvido] Consumindo uma SOAP quente

Recommended Posts

Bom, para quem quiser saber as condições do tempo de um determinado lugar:

 

$CitiesByCountry = Weather::getCitiesByCountry( "Brazil" );

var_dump( $CitiesByCountry );

O código acima irá exibir uma lista com váaaarias cidades do Brasil:

 

object(ArrayOfCitiesByCountry)#1 (1) {
  ["CitiesByCountry"]=>
  array(100) {
    ...
    [82]=>
    object(CityByCountry)#191 (2) {
      ["CityName"]=>
      string(20) "Sao Paulo Aeropor-To"
      ["CountryName"]=>
      string(6) "Brazil"
    }
    ...
  }
}

Vamos usar para teste a cidade de São Paulo (offset 82 na lista)

 

$tempo = Weather::getWeather( $CitiesByCountry[ 82 ] );

var_dump( $tempo );

 

O código acima irá produzir:

 


object(CurrentWeather)#106 (10) {
  ["Location"]=>
  string(64) "Sao Paulo/Congonhas Aeroporto, Brazil (SBSP) 23-37S 046-39W 802M"
  ["Time"]=>
  string(49) "Aug 11, 2009 - 07:00 PM EDT / 2009.08.11 2300 UTC"
  ["Wind"]=>
  string(45) " from the SSE (160 degrees) at 9 MPH (8 KT):0"
  ["Visibility"]=>
  string(12) " 3 mile(s):0"
  ["SkyConditions"]=>
  string(14) " mostly cloudy"
  ["Temperature"]=>
  string(12) " 55 F (13 C)"
  ["DewPoint"]=>
  string(12) " 51 F (11 C)"
  ["RelativeHumidity"]=>
  string(4) " 87%"
  ["Pressure"]=>
  string(24) " 30.33 in. Hg (1027 hPa)"
  ["Status"]=>
  string(7) "Success"
}

A classe abaixo é o que será retornado pelo método getWeather

 

/**
 * Condição meteorológica atual
 */
class CurrentWeather {
    public $Location;
    public $Time;
    public $Wind;
    public $Visibility;
    public $SkyConditions;
    public $Temperature;
    public $DewPoint;
    public $RelativeHumidity;
    public $Pressure;
    public $Status;
}

 

A classe abaixo é usada tanto para recuperar o tempo de uma localização como também na lista retornada pelo método getCitiesByCountry

/**
 * Nome da cidade e pais
 */
class CityByCountry {
    /**
     * Nome da cidade
     * @var string
     */
    public $CityName;

    /**
     * Nome do pais
     * @var string
     */
    public $CountryName;

    /**
     * Cria uma nova instância de CityByCountry
     * @param string $CityName O nome da cidade
     * @param string $CountryName O nome do pais
     */
    public function __construct( $CityName = null , $CountryName = null ){
        $this->CityName        = $CityName;
        $this->CountryName    = $CountryName;
    }
}

A classe abaixo é a lista de cidades, implementei algumas interfaces para permitir acesso às cidades como uma matriz

 

/**
 * Lista de Cidades pelo pais
 */
class ArrayOfCitiesByCountry implements ArrayAccess, Iterator, Countable {
    /**
     * Lista de cidades pelo pais
     * @var array
     */
    private $CitiesByCountry;

    /**
     * Cria uma nova instância da lista
     */
    public function __construct(){
        $this->CitiesByCountry = array();
    }

    /**
     * Implementa o método count() da interface Countable
     * @see Countable::count()
     */
    public function count(){
        return( count( $this->CitiesByCountry ) );
    }

    /**
     * Implementa o método current() da interface Iterator
     * @see Iterator::current()
     */
    public function current(){
        return( current( $this->CitiesByCountry ) );
    }

    /**
     * Implementa o método key() da interface Iterator
     * @see Iterator::key()
     */
    public function key(){
        key( $this->CitiesByCountry );
    }

    /**
     * Implementa o método next() da interface Iterator
     * @see Iterator::next()
     */
    public function next(){
        return( next( $this->CitiesByCountry ) );
    }

    /**
     * Implementa o método offsetExists() da interface ArrayAccess
     * @see ArrayAccess::offsetExists()
     */
    public function offsetExists( $offset ){
        return( isset( $this->CitiesByCountry[ $offset ] ) );
    }

    /**
     * Implementa o método offsetGet() da interface ArrayAccess
     * @see ArrayAccess::offsetGet()
     */
    public function offsetGet( $offset ){
        return( $this->CitiesByCountry[ $offset ] );
    }

    /**
     * Implementa o método offsetSet() da interface ArrayAccess
     * @see ArrayAccess::offsetSet()
     */
    public function offsetSet( $offset , $value ){
        if ( $offset == null )
            $offset = count( $this->CitiesByCountry );

        if ( $value instanceOf CityByCountry )
            $this->CitiesByCountry[ $offset ] = $value;
        else
            throw new UnexpectedValueException( "Era esperado um objeto do tipo CityByCountry." );
    }

    /**
     * Implementa o método offsetUnset() da interface ArrayAccess
     * @see ArrayAccess::offsetUnset()
     */
    public function offsetUnset( $offset ){
        unset( $this->CitiesByCountry[ $offset ] );
    }

    /**
     * Implementa o método rewind() da interface Iterator
     * @see Iterator::rewind()
     */
    public function rewind(){
        reset( $this->CitiesByCountry );
    }

    /**
     * Implementa o método valid() da interface Iterator
     * @see Iterator::valid()
     */
    public function valid(){
        return( current( $this->CitiesByCountry ) instanceOf CityByCountry );
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.