====== 4. Проектирование ====== Эта глава посвящена тому, что везде и во всем должен быть порядок. Так и в рабочем столе и на кухне и тем более в созданном для конечного пользователя приложении. А если не будет порядка, то и при создании мы получим "хаос!" и неразбериху, которые не позволят нам закончить приложение: * написали несколько страниц кода и поняли, что упустили в середине какой-то функционал... * создали страницу с логикой и страница долго грузится... * и так далее... Все это и не только, станет большим разочарованием и в большенстве заставит нас отложить разработку, а потом и вообще забросить проект. Мы должны точно знать, что будет находиться между начальной и конечной точкой создаваемого приложения. То-есть: * **index.php** - начальная точка входа в приложение. * **"что-то просходит"**, к примеру подключается база данных, подключаются стили проекта, формируются таблицы, окрывается форма регистрации и т.д. * **admin_panel.php** - конечная точка приложения. И вот в этом **"что-то просходит"** будет хаос и путаница и разочарование от написания проекта, если не составить заранее план. Нам неоходимо прописать предполагаемый план план взаимодействия приложения и пользователя, например: * Пользователь заходит на главную страницу впервые, программа проверит: - если приложение не установленно, то отправит пользователя в панель установки приложеня. - если приложение установленно, то приложение проверит регистрацию пользователя. - если пользователь не зарегистрирован, перенаправит на регистрацию. - если пользователь зарегистрирован, перенаправит на авторизацию. - если авторизация не прошла успешно, заблокирует на время этого пользователя. - если авторизация прошла успешно, откроет панель администратора. Пока вроде бы легко и просто, но посмотрим на пункт 1. * если приложение не установленно, то пользователь перенаправляется в панель установки приложеня, а это страница выбора языка и часовой зоны и продолжаем... * если пользователь не выбрал язык, то - приложение по умолчанию создаст файл конфигурации и запишет в него язык браузера или первый язык в списке приложения * если пользователь не выбрал часовую зону, то - приложение определит время сервера и запишет его в файл конфигурации... Легко? Вроде бы легко, но мы уже не учли, что после выбора языка приложение должно переключить нашу страницу в выбранный язык, а какие языки у приложения будут? И пользователю после выбора нужно подтвердить кнопкой "Продолжить", а иначе приложение, установит язик по умолчанию, не дождавшись выбора пользователя... Лугко? Вроды бы "ДА", но как-то не то, что мы ожидали и хочется пропустить эту главу, но увы, если мы напишем приложение, согласно данной инструкции, то получим приложение, которое уже кто-то написал для учебной цели этой инструкции, и уже есть готовая версия этого приложения. Вы сможите загрузить, как демонстрационную, так и рабочую версию для некоммерческого использования. Прочитав руководство вы сможите модифицировать код под себя и т.д., это позволяет лицензия. Но если вы решите написать свое, то без проекта вам не обойтись, а он в свою очередь облегчит вам работу по написаю кода. Готовы потрать время на проект? Если "Да", продолжаем: ← [[software:development:demo:cms:ucms:software|3. Программное обеспечение]] [[software:development:demo:cms:ucms:creating_project|4.1 Создание проекта]] →