3v4l.org

run code in 300+ PHP versions simultaneously
<?php /*! * Previsão de Tempo - CPTEC/INPE * * @documentation: http://servicos.cptec.inpe.br/XML/ * @icons: http://tempo.cptec.inpe.br/~rtempo/legenda.shtml */ class WeatherForecast { private $_source = 'CPTEC/INPE'; private $_api = 'http://servicos.cptec.inpe.br/XML/'; private $_city = null; private $_labels = array( 'ec' => array( 'description' => 'Encoberto com Chuvas Isoladas', 'text' => 'Céu totalmente encoberto com chuvas em algumas regiões, sem aberturas de sol.', ), 'ci' => array( 'description' => 'Chuvas Isoladas', 'text' => 'Muitas nuvens com curtos períodos de sol e chuvas em algumas áreas.', ), 'c' => array( 'description' => 'Chuva', 'text' => 'Muitas nuvens e chuvas periódicas.', ), 'in' => array( 'description' => 'Instável', 'text' => 'Nebulosidade variável com chuva a qualquer hora do dia.', ), 'pp' => array( 'description' => 'Possibilidade de Pancadas de Chuva', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de pancada de chuva.', ), 'cm' => array( 'description' => 'Chuva pela Manhã', 'text' => 'Chuva pela manhã melhorando ao longo do dia.', ), 'cn' => array( 'description' => 'Chuva a Noite', 'text' => 'Nebulosidade em aumento e chuvas durante a noite.', ), 'pt' => array( 'description' => 'Pancadas de Chuva a Tarde', 'text' => 'Predomínio de sol pela manhã. À tarde chove com trovoada.', ), 'pm' => array( 'description' => 'Pancadas de Chuva pela Manhã', 'text' => 'Chuva com trovoada pela manhã. À tarde o tempo abre e não chove.', ), 'np' => array( 'description' => 'Nublado e Pancadas de Chuva', 'text' => 'Muitas nuvens com curtos períodos de sol e pancadas de chuva com trovoadas.', ), 'pc' => array( 'description' => 'Pancadas de Chuva', 'text' => 'Chuva de curta duração e pode ser acompanhada de trovoadas a qualquer hora do dia.', ), 'pn' => array( 'description' => 'Parcialmente Nublado', 'text' => 'Sol entre poucas nuvens.', ), 'cv' => array( 'description' => 'Chuvisco', 'text' => 'Muitas nuvens e chuva fraca composta de pequenas gotas d´ água.', ), 'ch' => array( 'description' => 'Chuvoso', 'text' => 'Nublado com chuvas contínuas ao longo do dia.', ), 't' => array( 'description' => 'Tempestade', 'text' => 'Chuva forte capaz de gerar granizo e ou rajada de vento, com força destrutiva (Veloc. aprox. de 90 Km/h) e ou tornados.', ), 'ps' => array( 'description' => 'Predomínio de Sol', 'text' => 'Sol na maior parte do período.', ), 'e' => array( 'description' => 'Encoberto', 'text' => 'Céu totalmente encoberto, sem aberturas de sol.', ), 'n' => array( 'description' => 'Nublado', 'text' => 'Muitas nuvens com curtos períodos de sol.', ), 'cl' => array( 'description' => 'Céu Claro', 'text' => 'Sol durante todo o período. Ausência de nuvens.', ), 'nv' => array( 'description' => 'Nevoeiro', 'text' => 'Gotículas de água em suspensão que reduzem a visibilidade.', ), 'g' => array( 'description' => 'Geada', 'text' => 'Cobertura de cristais de gelo que se formam por sublimação direta sobre superfícies expostas cuja temperatura está abaixo do ponto de congelamento.', ), 'ne' => array( 'description' => 'Neve', 'text' => 'Vapor de água congelado na nuvem, que cai em forma de cristais e flocos.', ), 'nd' => array( 'description' => 'Não Definido', 'text' => 'Não Definido.', ), 'pnt' => array( 'description' => 'Pancadas de Chuva a Noite', 'text' => 'Chuva de curta duração podendo ser acompanhada de trovoadas à noite.', ), 'psc' => array( 'description' => 'Possibilidade de Chuva', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva.', ), 'pcm' => array( 'description' => 'Possibilidade de Chuva pela Manhã', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva pela manhã.', ), 'pct' => array( 'description' => 'Possibilidade de Chuva a Tarde', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva pela tarde.', ), 'pcn' => array( 'description' => 'Possibilidade de Chuva a Noite', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva à noite.', ), 'npt' => array( 'description' => 'Nublado com Pancadas a Tarde', 'text' => 'Muitas nuvens com curtos períodos de sol e pancadas de chuva com trovoadas à tarde.', ), 'npn' => array( 'description' => 'Nublado com Pancadas a Noite', 'text' => 'Muitas nuvens com curtos períodos de sol e pancadas de chuva com trovoadas à noite.', ), 'ncn' => array( 'description' => 'Nublado com Possibilidade de Chuva à Noite', 'text' => 'Muitas nuvens com curtos períodos de sol com pequena chance (inferior a 30%) de chuva à noite.', ), 'nct' => array( 'description' => 'Nublado com Possibilidade de Chuva à Tarde', 'text' => 'Muitas nuvens com curtos períodos de sol com pequena chance (inferior a 30%) de chuva à tarde.', ), 'ncm' => array( 'description' => 'Nublado com Possibilidade de Chuva pela Manhã', 'text' => 'Muitas nuvens com curtos períodos de sol com pequena chance (inferior a 30%) de chuva pela manhã.', ), 'npm' => array( 'description' => 'Nublado com Pancadas pela Manhã', 'text' => 'Muitas nuvens com curtos períodos de sol e chuva com trovoadas pela manhã.', ), 'npp' => array( 'description' => 'Nublado com Possibilidade de Chuva', 'text' => 'Muitas nuvens com curtos períodos de sol com pequena chance (inferior a 30%) de chuva a qualquer hora do dia.', ), 'vn' => array( 'description' => 'Variação de Nebulosidade', 'text' => 'Períodos curtos de sol intercalados com períodos de nuvens.', ), 'ct' => array( 'description' => 'Chuva a Tarde', 'text' => 'Nebulosidade em aumento e chuvas a partir da tarde.', ), 'ppn' => array( 'description' => 'Possibilidade de Pancadas de Chuva à Noite', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva à noite.', ), 'ppt' => array( 'description' => 'Possibilidade de Pancadas de Chuva à Tarde', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva pela tarde.', ), 'ppm' => array( 'description' => 'Possibilidade de Pancadas de Chuva pela Manhã', 'text' => 'Nebulosidade variável com pequena chance (inferior a 30%) de chuva pela manhã.', ), ); public function __construct($city) { $this->_city = $city; } private function _getApiData() { return simplexml_load_file($this->_api . 'cidade/7dias/' . $this->_city . '/previsao.xml'); } public function get() { $api = $this->_getApiData(); $data = new stdClass(); $data->source = $this->_source; $data->city = (string) $api->nome; $data->state = (string) $api->uf; $data->updated_at = (string) $api->atualizacao; $data->forecast = array(); for ($i = 0; $i < count($api->previsao); $i++) { $forecast = $api->previsao[$i]; $data->forecast[$i]->day = (string) $forecast->dia; $data->forecast[$i]->iuv = (float) $forecast->iuv; $data->forecast[$i]->temperature = new stdClass(); $data->forecast[$i]->temperature->high = (float) $forecast->maxima; $data->forecast[$i]->temperature->low = (float) $forecast->minima; $data->forecast[$i]->temperature->average = ($data->forecast[$i]->temperature->low + $data->forecast[$i]->temperature->high) / 2; $data->forecast[$i]->weather = new stdClass(); $data->forecast[$i]->weather->abbreviation = (string) $forecast->tempo; $data->forecast[$i]->weather->description = $this->_labels[(string) $forecast[$i]->tempo]['description']; $data->forecast[$i]->weather->text = $this->_labels[(string) $forecast[$i]->tempo]['text']; $data->forecast[$i]->weather->icon = 'http://img0.cptec.inpe.br/~rgrafico/icones_principais/tempo/icones/' . (string) $forecast->tempo . '.png'; } return $data; } } $wf = new WeatherForecast(237); // Porto Alegre, RS $data = $wf->get(); header('Content-type: application/json; charset=UTF-8'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET'); echo json_encode($data);
Output for git.master, git.master_jit
Warning: simplexml_load_file(): php_network_getaddresses: getaddrinfo for servicos.cptec.inpe.br failed: System error in /in/jDMTt on line 178 Warning: simplexml_load_file(http://servicos.cptec.inpe.br/XML/cidade/7dias/237/previsao.xml): Failed to open stream: php_network_getaddresses: getaddrinfo for servicos.cptec.inpe.br failed: System error in /in/jDMTt on line 178 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://servicos.cptec.inpe.br/XML/cidade/7dias/237/previsao.xml" in /in/jDMTt on line 178 Warning: Attempt to read property "nome" on bool in /in/jDMTt on line 184 Warning: Attempt to read property "uf" on bool in /in/jDMTt on line 185 Warning: Attempt to read property "atualizacao" on bool in /in/jDMTt on line 186 Warning: Attempt to read property "previsao" on bool in /in/jDMTt on line 188 Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /in/jDMTt:188 Stack trace: #0 /in/jDMTt(207): WeatherForecast->get() #1 {main} thrown in /in/jDMTt on line 188
Process exited with code 255.
Output for rfc.property-hooks
Warning: simplexml_load_file(): php_network_getaddresses: getaddrinfo for servicos.cptec.inpe.br failed: System error in /in/jDMTt on line 178 Warning: simplexml_load_file(http://servicos.cptec.inpe.br/XML/cidade/7dias/237/previsao.xml): Failed to open stream: php_network_getaddresses: getaddrinfo for servicos.cptec.inpe.br failed: System error in /in/jDMTt on line 178 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://servicos.cptec.inpe.br/XML/cidade/7dias/237/previsao.xml" in /in/jDMTt on line 178 Warning: Attempt to read property "nome" on false in /in/jDMTt on line 184 Warning: Attempt to read property "uf" on false in /in/jDMTt on line 185 Warning: Attempt to read property "atualizacao" on false in /in/jDMTt on line 186 Warning: Attempt to read property "previsao" on false in /in/jDMTt on line 188 Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /in/jDMTt:188 Stack trace: #0 /in/jDMTt(207): WeatherForecast->get() #1 {main} thrown in /in/jDMTt on line 188
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
59.51 ms | 402 KiB | 8 Q