pirateunix/Forecast
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Для реализации поставленной задачи, согласно схеме проектирования MVC, были разработаны модели для работы с БД и API, содержащие основную логику приложения, контроллеры для контроля и обработки полученной от пользователя информации и отображения результатов. Для визуализации воспользовался шаблонизатором smarty. Единственной входной точкой является index.php, далее все запросы перенаправляются роутером (Router.php) Схема работы роутера: парсим запрос, разделяем на: имя класса, имя метода, параметры. Далее создаем объект данного класса, вызываем нужный метод с заданными параметрами. Было принято решение в БД хранить прогноз погоды для каждого города, данная информация заноситься в БД отдельным скриптом ежедневно по крону, Каждый день обновляется прогноз на существующие даты и добавляется на новые. Благодаря этому мы смогли получить архив погоды за прошедшие дни. Так как API, отдает несколько прогнозов на каждый день, по часам, а нам необходимо отобразить общую информацию за день, было принято решение брать прогноз на 12 часов дня. Так же в БД храним список городов выбранный пользователем. Отображение погоды текущего города в верхнем блоке, сделано с использование cookie. Верстка взята из примера в ТЗ. Модели: 1)DbClass.php — класс для работы с базой данных, реализующий паттерн singleton. Благодаря этому мы можем гарантировать что мы будем иметь единственный экземпляр класса, работающего с БД. 2)DbModel.php — абстрактный класс для всех моделей, работающих с БД. 3)ForecastModel.php — в данной модели два метода: выбор из БД прогноза погоды на 3 дня вперед, выбор из БД погды за 3 прошедших дня. Реализация методов: формируем две даты и выбираем из БД прогнозы между этими датами. Так как данные из API получаем с учетом часовых поясов, было принято решение дату +3 дня формировать с временем 23:59:59. Были рассмотрены и другие варианты: 1. парсить получаемую из API дату, убирать часовой пояс, подставлять свой и записывать в БД со своим часовым поясом. На мой взгляд это менее правильно, хотя вполне работоспособно. 2. во время выборки прогноза из БД выставлять часовой пояс города, по которому делаем выборку. Средствами mongo реализовать это не удалось, средствами PHP, на мой взгляд некорректно с учетом заданных требований. 4)CityModel.php — Содержит методы для добавления и удаления в список выбранных городов, а так же получения данного списка из БД. 5)ApiModel.php — модель для работы с API, в одном методе реализовано по заданному URI. В остальных методах производиться парсинг и выборка необходимых нам данных.
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published