2. Что такое “Ниҳол” ?
“Ниҳол” – это упрощенный и легкий фреймворк
для разработки веб-приложений и веб-сервисов.
Он разработан на базе PHP и JavaScript. Простота
и легкость в использовании, а также модульная
структура придают ему гибкость и возможность
масштабирования.
Примечание: Фреймворк (каркас) – это структура
программной системы, а также набор готовых
компонентов и моделей, облегчающих разработку
программного продукта.
3. О том как появился проект
В 2011-м году мой друг обратился ко мне с просьбой
помочь ему с разработкой небольшого приложения
для корпоративных нужд. Примерно так все и
началось…
Отмечу, что это произошло после моего приезда из
Москвы, где я работал в команде над одним B2B
проектом, и на тот момент у меня уже был некоторый
опыт разработки (VB, C#, JS, PHP). Видимо именно
тогда пришла мысль о создании некоего удобного
инструмента, который бы позволил разрабатывать
веб-приложения в дальнейшем (затем я начал работу
еще над одним проектом также на базе вновь
разработанного единого каркаса).
4. Структура “Ниҳол”
Система логически разделена
на три основных составляющих
– это ядро, модули приложения
(back-end) и пользовательский
интерфейс (front-end). На
сегодня в основе “Ниҳол”
заложены принципы объектно-
ориентированного
программирования (ООП) и
собственная реализация
шаблона проектирования MVC
(Модель-Представление-
Контроллер).
5. Файловая иерархия
NIHOL
├───app
│ ├───mvc
│ │ ├───controllers
│ │ ├───models
│ │ └───views
│ ├───pages
│ └───sql
├───core
│ ├───lib
│ └───mvc
│ ├───controllers
│ ├───models
│ └───views
└───ui
├───templates
│ └───appname
│ ├───css
│ └───img
│ └───ico
└───tools
├───bootstrap
│ ├───css
│ ├───fonts
│ └───js
└───jquery
└───ui
├───css
│ └───smoothness
│ └───images
└───js
└───i18n
Инициализация веб-приложения происходит следующим образом:
запускается стартовый скрипт, затем загружается файл
конфигурации, далее происходит загрузка основного скрипта ядра,
который в свою очередь инициализирует основные компоненты
каркаса, приложения и пользовательского интерфейса. Далее
взаимодействие происходит с модулями приложения и ядра
посредством URL, REQUEST, ROUTER и других классов системы.
7. О коде
За время работы над развитием проекта применялись разнообразные подходы при написании
кода. В ранних версиях каркас разрабатывался с обильным применением функций, затем начался переход
к повсеместному применению ООП, то есть функции преобразовались в методы неких классов, затем
классы группировались в области имен и т.д. Например, на смену стандартным функциям для работы с
базами данных в “Ниҳол” стал применяться функционал PDO, что позволяет делать приложения более
безопасными и гибкими по отношению к источникам данных. Также повсеместно применялись успешные
практики сообщества PHP-разработчиков для решения тех или иных задач проектирования.
В системе есть своя реализация принципов шаблона (паттерна) проектирования MVC, также встречаются
шаблоны типа «синглтон», применяется autoloader классов и многие другие полезные приемы. Что
касается пользовательского интерфейса, то “Ниҳол” позволяет интегрировать сторонние инструменты,
такие как JQuery, JQuery UI, Bootstrap и др., это добавляет удобство для разработки, при этом также
сохраняется возможность использования своих собственных шаблонов и front-end скриптов. В ходе
работы над некоторыми конкретными задачами приходилось реализовывать возможности локализации
интерфейса, в том числе и на таджикский язык. В ядре системы имеются модули управления
пользователями и группами пользователей, кроме того есть панель управления для пользователей и
администраторов.
Модульная структура дает возможность управлять логическими частями приложения, при
этом устанавливать необходимый уровень доступа. В настоящий момент продолжается процесс
совершенствования ядра системы, например, предпринимаются шаги к формализации собственного API
каркаса. Процесс разработки для меня представляется одновременно увлекательным и полезным с точки
зрения изучения технологий программирования и получения опыта проектирования.
Таким образом, “Ниҳол” – это open source проект, которому есть куда развиваться =)
9. Примеры реализации
Так сложилось, что многие приложения, созданные на базе “Ниҳол”
разрабатывались для внутренних нужд тех или иных проектов
(компаний), поэтому многие из них не опубликованы в широком доступе
и тем не менее я постараюсь рассказать Вас о некоторых примерах
реализации проектов на базе данной системы.
10. Проект автоматизированного мониторинга
Данный программный продукт был реализован для осуществления автоматизированного
мониторинга хода реализации проекта «Управление инвестициями на питание в наиболее
необеспеченные продовольствием районы Хатлонской области». Он охватывал город
Душанбе и 10 районов Хатлонской области, откуда посредством каналов связи (3G модемы
осуществлялся доступ к приложению и базе данных).
13. Проект электронного анкетирования
Проект сокращенно был назван «RBF». Суть проекта провести детальное
анкетирование медицинских учреждений с целью дальнейшего анализа
и планирования распределения средств на их развитие.
14. Вопросник
Вопросник содержал порядка 300 вопросов, были большие формы с обработкой
зависимостей… Была привязка данных к точкам карте (геолокация)…
15. Один из новых проектов
Данный проект автоматизирует процесс управления и обработки отчетов телефонного
биллинга… Работает с отчетами в формате XML, преобразует при необходимости в
Excel или веб-вариант, предоставляя доступ пользователей к личным кабинетам,
вывод статистики, содержание справочной информации и др.
16. СПАСИБО ЗА ВНИМАНИЕ!
Наши контакты:
Website: http://code.tj; E-mail: team@code.tj;
http://facebook.com/groups/code.tj