Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

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

 

Продолжаем разбирать частности умного погодного информера, умеющего показывать погоду по 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. Только для вас, сегодня... ну и ежедневно, разумеется!

 

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

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