Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 );
}
}Carregando comentários...