![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
опять мутный вопрос
допустим я собираю страницу из многих модулей скажем есть: шапка, блок меню, колонка новостей, контентная страница, ещё какие-нибудь модули типа курсов волют и т.п. как это лучше сделать? функционал для каждого модуля находится в этом самом модуле и выдаёт он хтмл взависимости от существующих переменных если принять за правило, что все вычисления и запросы должны осуществиться до посылки заголовков, то получается надо вводить некую переменную, в которую дособирать весь хтмл из модулей $html .= '<тэги>'; и вывод только в конце (а ведь он может быть достаточно большим - 200-400 кб, или это ничего?) создавать хередок или шаблоны (делал только под спецзадачи) как-то не вижу смысла, т.к. получается надо довести все переменные до конца, вызвать все эти шаблоны и пихать не хотелось бы, чтоб меня отсылали к теории по шаблонам (итак каша в голове от многочисл.документации), что вообще считаете, как лучше произвести вывод в таком случае? спасибо |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Ты, наверное, хотел сказать не "страницу", а "шаблон"?
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
возможно, но собираю я всё же страницу
с уже заполненными ячейками, блоками и т.п. |
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
Я вижу несколько выходов.
Первый - это банальный. Перехватить выходной поток командой obstart(), и, пока всё не обработается, не выводить в браузер. Но при этом у тебя теряется одно из немаловажных преимуществ HTM - отображение страницы "налету", то есть пока все данные не обработаются, пользователь ничего не увидит. Можно, конечно, перехватывать не всю инфу, а только какую-то часть кода, а потом комбинировать командой ob_get_clean(), но всё-равно это не самый лучший способ, как по мне. Второй способ понагляднее. Есть такая модель, MVC называется (Model View Controller). Там есть одна точка входа, т.е. не 10 скриптов типа index.php, shop.php, guestbook.php, а один единственный базовый скрипт index.php, который решает дальнейшую судьбу (выбирает какой из контроллеров подключить, хотя, зачастую для этой задачи создаётся дополнительный скрипт router.php, и в базовом скрипте остаётся только поключение конфига, и инициализация данных). Весь код делится на 3 логические составляющие, на какие - не сложно догадаться из названия. Все рассчёты, работа с СУБД и так далее происходят, собственно, в model (модели). View (представление), отвечает непосредственно за вывод информации. В качестве view может выступать какой-нибудь шаблонизатор. Controller (контроллеры) будут отвечать за обработку пользовательской деятельности - обрабатывают данные, полученные от пользователя ($_GET, $_POST, $_COOKIE, etc), решают, какие данные запросить у model (никаких рассчётов в контроллере особо не проводится) и выбирают, в какое из view передать обработанные данные Про этот способ достаточно неплохо рассказано (и показано) здесь. Стоит так же добавить, что этот способ используется в мощных фреймвёрках типа Zend Framework, mzz и т.д. Это сообщение отредактировал(а) HackMan - 22.7.2008, 19:24 -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
хм, прикольно узнать как называется то чем занимался до этого.
раньше оно правда пребывало в состоянии бардака. завтра обязательно почитаю а как лучше поступить с независимыми модулями? те что могут подключаться в тело страницы, а могут работать и независимо? хотя итак ясно. но хочется мнение услышать |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
HackMan, вот только не надо сказки рассказывать.
все эти index.php, shop.php, guestbook.php у тебя останутся. только вызываться будут через индекс. Самое большое надувательство после смарти - это ваше эмвэцэ. Что за глупость вообще, запихивать всю логику в одну модель? гостевую с шопом, ага. очень удобно. А контроллеры у нас будут только ввод обрабатывать. обхохочешься. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
тов. главнокомандующий, я уже задавал вопрос, какой моделью ты пользуешься?
|
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
bars80080,
Что-то не очень понял вопроса. Хранить их можно как угодно. зависит от особенностей проекта и/или фреймворка. Можно создать отдельную папочку modules и в ней на каждый модуль по папке, а в каждой из той папок создать реализацию контроллера, моедли и представления данного модуля. А можно создать три папки: modules, controllers, views и кидать в них все модули. Однозначно лучшего варианта нет, всё зависит от потребностей. Вот была бы файловая система не иерархическая, а реляционная, было бы лучше ![]() Как подключать модули - тоже единого решения нет. Можно например, просканировать папку modules (для самого первого варианта) и таким образом узнать о том, какие модули есть. А можно в базе данных создать табичку modules примерно следующего содержания:
Если хочется иметь иерархию модулей и подключать их друг к другу (например есть модули "новости" и "фотогалерея", и надо создать один модуль "комментарии", который можно без проблем прикрутить и к первому и ко второму модулю) можно к той табличке добавить что-то вроде
Добавлено @ 20:38 Feldmarschall, я не говорил, что модель должна быть одна
Я не утверждал, что скриптов станет меньше. Я сказал, что точка входа будет одна Это сообщение отредактировал(а) HackMan - 22.7.2008, 20:41 -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
||||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
значит или я неправильно выразился или ты меня не так понял
-------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Вот не надо только этих увиливаний.
Ну хоть какое-то решение вообще существует? Или, как в случае со смарти, будем сами себе рассказывать, что оно служит для разделения пхп и хтмл, и сами себе будем верить? "У нас должна быть модель, вью и контроллер, но на самом деле у нас будет индекс пхп для подгрузки конфига и роутер для подгрузки гестбуки и шопа" Ты можешь привести пример канонического приложения с мвц? или все сведется к вызову через индекс, который мы, к радости топикстартера, назовем красивым модным словом? Это сообщение отредактировал(а) Feldmarschall - 22.7.2008, 20:57 |
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
Конечно существуют. Прочитай мой предыдущий пост, адресованный bars80080, только я там опечатался Хотел написать не modules, а models А при чём тут вообще смарти? Мой шаблонизатор сводится к
Смарти я не признаю. На смарти, пишут шаблоны на его (довольно корявом) языке, чтобы смарти их потом перегонял постоянно в PHP-код, а это куча никому не нужной работы. Хм... Например, Wordpress, IPB если я не ошибаюсь Это сообщение отредактировал(а) HackMan - 22.7.2008, 21:13 -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
выше ты написал только, что универсального, единственно-правильного решения не существует.
И никакого не привел. вот, допустим, у меня был сайт из 4 скриптов - index.php, shop.php, guestbook.php, news.php как его переделать под MVC? |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
А что значит канонического? MVC - это не более чем схема организации проекта, которая упрощает работу с ним. Да, ты можешь это все сделать на отдельных файлах, понимать логику связей между ними будет несколько сложнее. Добавлено через 47 секунд
А надо? Какие между ними связи существуют? Если ни каких... то особого смысла нет. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
то есть, если я работу с БД для гостевой, новостей и шопа солью в один файл, обработку гета с постом для них же - в другой, то это получится MVC, и логика связей упростится. Я правильно понял?
Добавлено через 1 минуту и 51 секунду И еще. если model у меня - это структура каталога -
сами файлы - контроллеры, а вью - используемый ими Смарти, то у меня тоже MVC? Добавлено через 3 минуты и 23 секунды Я дофига встречаю людей, которые постоянно говорят слово MVC. Но ни от одного я не смог добиться, что это такое, и как оно применяется в их конкретных скриптах. Добавлено через 7 минут и 13 секунд допустиим, общая авторизация в шопе и в гостевой. Этого достаточно? А можно попросить пример сайта с достаточными связями для мвц? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |