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