xintrea
Новичок
Как народ конструирует свой PHP-фреймверк, чтобы кодить "как на обычном языке прогр"?
Как народ конструирует свой PHP-фреймверк, чтобы кодить "как на обычном языке программирования"?
Здравствуйте!
Меня интересует вот какой концептуальный вопрос. Протокол HTTP-это протокол "без памяти", то есть каждый вызов урла с именем скрипта никак явно не связан с предыдущим вызовом. Обойти это помогает механизм сессий, который реализован на достаточно "низком" уровне, и по сути является костылем. Использование "продвинутых" сессий, например как они реализованы в CodeIgniter, несколько упрощает работу, но логически механизм сессий остается тем же.
А хотелось бы понять вот что. Как построить свой фреймверк так, чтобы можно было прогать "как на обычном языке программирвания"? Ну, то есть, чтоб не замечать, что страница открыта заново с какими-то GET-параметрами, POST-данными, данными в сессиях... Чтобы данные в сессиях не приходилось чистить вручную при их ненадобности. То есть, чтобы абстрагироваться от этих веб-особенностей.
У меня при создании веб-приложения все время получается такой порочный круг:
- Формируем HTML с возможными URL, куда может перейти пользователь
- Запишем какие надо данные в сессию
- Показываем пользователю HTML, ждем его действий
- По совокупности состояний GET/POST/Сессий выясняем, что сделал пользователь
- Реализуем реакцию на действия пользователя
- Переходим к первому пункту
Этот цикл очень неестественен, хотя бы потому, что если в действиях пользователя происходит ветвление (пользователь может нажать "Далее", а может нажать какой-нить "Выбор из списка"), то получается, что будут вызваны разные контроллеры, и эти разные контроллеры должны правильно среагировать на предыдущее состояние программы, извлекаемое из GET/POST/SESS.
Получается, что контроль логики размывается по контроллерам, и приходится следить в нескольких разных (инкапсулированных!) местах кода за одними и теми же данными GET/POST/SESS. И если что-то в программе меняется (например добавляется/удаляется/переименовывается GET/POST/SESS переменная), надо прыгать по всем контроллерам, чтобы состыковывать эти изменения и обеспечить правильную логику. Такой процесс меня очень не радует.
Посему хочу услышать мнения профи, какую структуру фреймверка вы применяете, чтобы не долбаться, как я?
Как народ конструирует свой PHP-фреймверк, чтобы кодить "как на обычном языке программирования"?
Здравствуйте!
Меня интересует вот какой концептуальный вопрос. Протокол HTTP-это протокол "без памяти", то есть каждый вызов урла с именем скрипта никак явно не связан с предыдущим вызовом. Обойти это помогает механизм сессий, который реализован на достаточно "низком" уровне, и по сути является костылем. Использование "продвинутых" сессий, например как они реализованы в CodeIgniter, несколько упрощает работу, но логически механизм сессий остается тем же.
А хотелось бы понять вот что. Как построить свой фреймверк так, чтобы можно было прогать "как на обычном языке программирвания"? Ну, то есть, чтоб не замечать, что страница открыта заново с какими-то GET-параметрами, POST-данными, данными в сессиях... Чтобы данные в сессиях не приходилось чистить вручную при их ненадобности. То есть, чтобы абстрагироваться от этих веб-особенностей.
У меня при создании веб-приложения все время получается такой порочный круг:
- Формируем HTML с возможными URL, куда может перейти пользователь
- Запишем какие надо данные в сессию
- Показываем пользователю HTML, ждем его действий
- По совокупности состояний GET/POST/Сессий выясняем, что сделал пользователь
- Реализуем реакцию на действия пользователя
- Переходим к первому пункту
Этот цикл очень неестественен, хотя бы потому, что если в действиях пользователя происходит ветвление (пользователь может нажать "Далее", а может нажать какой-нить "Выбор из списка"), то получается, что будут вызваны разные контроллеры, и эти разные контроллеры должны правильно среагировать на предыдущее состояние программы, извлекаемое из GET/POST/SESS.
Получается, что контроль логики размывается по контроллерам, и приходится следить в нескольких разных (инкапсулированных!) местах кода за одними и теми же данными GET/POST/SESS. И если что-то в программе меняется (например добавляется/удаляется/переименовывается GET/POST/SESS переменная), надо прыгать по всем контроллерам, чтобы состыковывать эти изменения и обеспечить правильную логику. Такой процесс меня очень не радует.
Посему хочу услышать мнения профи, какую структуру фреймверка вы применяете, чтобы не долбаться, как я?