Четверг, 22 января 2015 18:15

Форматируем XML WorldWeatherOnline. HuPHP

Оцените материал
(0 голосов)

 

Продолжаем разбирать частности умного погодного информера, умеющего показывать погоду по ip для любого пользователя вашего сайта, из каких бы уголков света он к вам не забрел. В очередной раз повторю, что данное свойство, представляющееся новичкам Глобавльной Сети почти волшебным, основано у нас с вами на использовании базы данных Sypex Geo и отличного погодного сервиса WorldWeatherOnline.com.

Совсем недавно, получив несколько пользовательских жалоб (ох уж эти пользователи) на то, что joomla-модуль jWeather_by_ip не работает, проведя быстрый аудит и связавшись с представителем администрации WorldWeatherOnline - неожиданно для себя я выяснил, что WWO предоставляет уже и вторую версию своего очень дружелюбного API... доступны Free-Weather-API и Free-Weather-API-V2, вы вправе выбрать любой из них либо использовать оба. Ну или, разумеется, Premium API, возможный даже на условии free 60-day trial.

Таким образом, причиной проблем была, вероятно, сугубо невнимательность: jWeather_by_ip работает пока что только на первом API, а генерился ключ уже для второго. Успокоившись на этот предмет (но дав себе зарок доработать tooltips админки модуля), автор статьи начал разбираться в нововведениях Free-Weather-API-V2, вознамерившись перевести на него для начала хотя бы информер, размещенный на сайте (это у меня не модуль, это просто скрипт; так уж сложилось).

 

 

И вот здесь... наткнулся я на некую сложность, а именно; структура XML (ну и следом структура массива, соответственно) оказалась в новой версии API изменена, и старый код не работал. Сэкономить время и усилия мне помог HuPHP - Hubbitus PHP framework:

 

PHP framework I long time want publish. It mostly written for PHP5 in OOP style provide some object oriented thinks which PHP 6 brings natively, implements auto debug output dependant on automatically detected output method (web, console, log), implements some external APIs like Yandex Market XML, O-range.ru SMS API, rokokassa.ru and a1agregator.ru integration and so on.

 

, который и представляю сегодня вашему вниманию; данное изделие Hubbitus-a способно сильно облегчить жизнь многим и многим профессионалам web-разработки. Я проиллюстрирую  возможности HuPHP (всего только один из многочисленных аспектов работы фреймворка - массивы, обработка ошибок, макросы, строковые классы, врапперы, работа с изображениями, отладка, логгинг, система конфигурации… практически весь скелет проекта) на примере XML, получаемого от  Free-Weather-API-V2 WorldWeatherOnline.

Прежде всего, для тех читателей, кто счел для себя возможным бросить беглый взгляд на код информера, а не использовать его совсем уж "втемную", чтобы не сказать "втупую"... следует еще раз повторить: foreach совершенно не является в данном случае какой-то непременной необходимостью, это скорее по привычке:

 

foreach ($xml[0] as $name => $val) { 
foreach ($val as $name1 => $val1)
{
...


Вы вполне можете убрать цикл, выводя различные аспекты состояния погоды таким, например, образом:

 

echo '<img src="' . $xml->current_condition->weatherIconUrl . '"/>';
echo ($xml->request->query);
echo ($xml->current_condition->weatherDesc);

 

Или так:

 

<div><?='Влажность '. ($xml->current_condition->humidity). ' %';?></div>
<div><?='Осадки '. ($xml->weather[4]->hourly[5]->precipMM). ' мм';?></div>

 

Но вот именно структура нового XML сходу показалась не вполне понятной и довольно громоздкой; а понимание необходимо, иначе вы всегда рискуете вывести пред изумленные очи пользователя нечто уж совсем неподходящее... положение спас HuPHP - Hubbitus PHP framework, который я подключил (в самом конце своего скрипта) буквально двумя строчками:

 

include('../../../HuPHP/autoload.php');
dump::a($xml);

 

Ничего более не потребовалось; перезагрузив web-страничку, я получил довольно длинный, но уже удобно отформатированный XML, структура которого не вызывала желания сделать перерыв на кофе-брейк. И, судя по всему, я рассказал вам всего лишь самый краешек умений и спецификаций фреймворка... если зацепило и заинтересовало, вы можете HuPHP самолично скачать, подробно просмотреть и всячески протестировать, глянуть также примеры и доку, все это без проблем доступно на GitHub. Обновление фреймворка HuPHP крайне несложно:

 

git pul

 

Попробуете - отпишитесь, зафилленная бага для разработчика - все равно что мед по сердцу или там бутылка хорошего пива, вселяет надежду и всячески стимулирует.

 

Минутка рекламы. Поверьте, сейчас не самый худший момент для того, чтобы заказать интернет-магазин на движке Prestashop либо иной популярной CMS. Только для вас, сегодня... ну и ежедневно, разумеется!

 

Оставить комментарий

Добавьте ваш комментарий

Заказать сайт

Веб-разработка. Заказать сайт

Вы можете заказать сайт-визитку, блог, корпоративный сайт, интернет-магазин или коммерческий web-портал.