Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> собираем страницу 
:(
    Опции темы
bars80080
Дата 22.7.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



опять мутный вопрос

допустим я собираю страницу из многих модулей
скажем есть: шапка, блок меню, колонка новостей, контентная страница, ещё какие-нибудь модули типа курсов волют и т.п.
как это лучше сделать?

функционал для каждого модуля находится в этом самом модуле и выдаёт он хтмл взависимости от существующих переменных

если принять за правило, что все вычисления и запросы должны осуществиться до посылки заголовков, то получается надо вводить некую переменную, в которую дособирать весь хтмл из модулей $html .= '<тэги>'; и вывод только в конце (а ведь он может быть достаточно большим - 200-400 кб, или это ничего?)
создавать хередок или шаблоны (делал только под спецзадачи) как-то не вижу смысла, т.к. получается надо довести все переменные до конца, вызвать все эти шаблоны и пихать


не хотелось бы, чтоб меня отсылали к теории по шаблонам (итак каша в голове от многочисл.документации), что вообще считаете, как лучше произвести вывод в таком случае?

спасибо
PM MAIL WWW   Вверх
Feldmarschall
Дата 22.7.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Ты, наверное, хотел сказать не "страницу", а "шаблон"?
PM   Вверх
bars80080
Дата 22.7.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



возможно, но собираю я всё же страницу
с уже заполненными ячейками, блоками и т.п.
PM MAIL WWW   Вверх
HackMan
Дата 22.7.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Я вижу несколько выходов.
Первый - это банальный. Перехватить выходной поток командой obstart(), и, пока всё не обработается, не выводить в браузер. Но при этом у тебя теряется одно из немаловажных преимуществ HTM - отображение страницы "налету", то есть пока все данные не обработаются, пользователь ничего не увидит. Можно, конечно, перехватывать не всю инфу, а только какую-то часть кода, а потом комбинировать командой ob_get_clean(), но всё-равно это не самый лучший способ, как по мне.

Второй способ понагляднее. Есть такая модель, MVC называется (Model View Controller). Там есть одна точка входа, т.е. не 10 скриптов типа index.phpshop.phpguestbook.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


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
bars80080
Дата 22.7.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



хм, прикольно узнать как называется то чем занимался до этого.
раньше оно правда пребывало в состоянии бардака. завтра обязательно почитаю

а как лучше поступить с независимыми модулями? те что могут подключаться в тело страницы, а могут работать и независимо?

хотя итак ясно. но хочется мнение услышать
PM MAIL WWW   Вверх
Feldmarschall
Дата 22.7.2008, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



HackMan, вот только не надо сказки рассказывать. 
все эти  index.php, shop.php, guestbook.php у тебя останутся. только вызываться будут через индекс. 
Самое большое надувательство после смарти - это ваше эмвэцэ.

Что за глупость вообще, запихивать всю логику в одну модель? гостевую с шопом, ага. очень удобно. А контроллеры у нас будут только ввод обрабатывать. обхохочешься.


PM   Вверх
bars80080
Дата 22.7.2008, 20:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



тов. главнокомандующий, я уже задавал вопрос, какой моделью ты пользуешься?
PM MAIL WWW   Вверх
HackMan
Дата 22.7.2008, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



bars80080
Что-то не очень понял вопроса.

Хранить их можно как угодно. зависит от особенностей проекта и/или фреймворка. Можно создать отдельную папочку modules и в ней на каждый модуль по папке, а в каждой из той папок создать реализацию контроллера, моедли и представления данного модуля. А можно создать 
три папки: modulescontrollersviews и кидать в них все модули. Однозначно лучшего варианта нет, всё зависит от потребностей. Вот была бы файловая система не иерархическая, а реляционная, было бы лучше  smile 

Как подключать модули - тоже единого решения нет. Можно например, просканировать папку modules (для самого первого варианта) и таким образом узнать о том, какие модули есть. А можно в базе данных создать табичку modules примерно следующего содержания:
  • id
  • path
  • name
  • author
Опять же всё зависит от поставленной задачи.

Если хочется иметь иерархию модулей и подключать их друг к другу (например есть модули "новости" и "фотогалерея", и надо создать один модуль "комментарии", который можно без проблем прикрутить и к первому и ко второму модулю) можно к той табличке добавить что-то вроде
  • parent
Ещё раз повторюсь, что универсального, единственно-правильного решения не существует. У меня от проекта к проекту структура данных постоянно меняется, что-то добавляю, что-то меняю. Одни изменения оправданные, другие оправданны только в рамках данного проекта.

Добавлено @ 20:38
Feldmarschall, я не говорил, что модель должна быть одна

Цитата(Feldmarschall @  22.7.2008,  20:22 Найти цитируемый пост)
все эти  index.php, shop.php, guestbook.php у тебя останутся. только вызываться будут через индекс

Я не утверждал, что скриптов станет меньше. Я сказал, что точка входа будет одна
Цитата(HackMan @  22.7.2008,  19:14 Найти цитируемый пост)
Там есть одна точка входа



Это сообщение отредактировал(а) HackMan - 22.7.2008, 20:41


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Feldmarschall
Дата 22.7.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(HackMan @  22.7.2008,  20:36 Найти цитируемый пост)
Я не утверждал, что скриптов станет меньше.

Может, и не утверждал, но написал.

Ладно, значит остались все эти скрипты. А что тогда лежит в model?
PM   Вверх
HackMan
Дата 22.7.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Цитата(Feldmarschall @  22.7.2008,  20:42 Найти цитируемый пост)
Может, и не утверждал, но написал.

значит или я неправильно выразился или ты меня не так понял

Цитата(Feldmarschall @  22.7.2008,  20:42 Найти цитируемый пост)
Ладно, значит остались все эти скрипты. А что тогда лежит в model? 

Цитата(HackMan @  22.7.2008,  20:36 Найти цитируемый пост)
Ещё раз повторюсь, что универсального, единственно-правильного решения не существует. У меня от проекта к проекту структура данных постоянно меняется, что-то добавляю, что-то меняю. Одни изменения оправданные, другие оправданны только в рамках данного проекта.




--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Feldmarschall
Дата 22.7.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Вот не надо только этих увиливаний.
Ну хоть какое-то решение вообще существует? Или, как в случае со смарти, будем сами себе рассказывать, что оно служит для разделения пхп и хтмл, и сами себе будем верить? "У нас должна быть модель, вью и контроллер, но на самом деле у нас будет индекс пхп для подгрузки конфига и роутер для подгрузки гестбуки и шопа"
Ты можешь привести пример канонического приложения с мвц? или все сведется к вызову через индекс, который мы, к радости топикстартера, назовем красивым модным словом?

Это сообщение отредактировал(а) Feldmarschall - 22.7.2008, 20:57
PM   Вверх
HackMan
Дата 22.7.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Цитата(Feldmarschall @  22.7.2008,  20:55 Найти цитируемый пост)
Ну хоть какое-то решение вообще существует? 

Конечно существуют. Прочитай мой предыдущий пост, адресованный bars80080, только я там опечатался

Цитата(HackMan @  22.7.2008,  20:36 Найти цитируемый пост)
modules, controllers, views

Хотел написать не modules, а models


Цитата(Feldmarschall @  22.7.2008,  20:55 Найти цитируемый пост)
Или, как в случае со смарти, будем сами себе рассказывать, что оно служит для разделения пхп и хтмл, и сами себе будем верить? "У нас должна быть модель, вью и контроллер, но на самом деле у нас будет индекс пхп для подгрузки конфига и роутер для подгрузки гестбуки и шопа"

А при чём тут вообще смарти? Мой шаблонизатор сводится к

Код

<html>
  <head>
    <title><?php echo $title; ?></title>
...


Смарти я не признаю. На смарти, пишут шаблоны на его (довольно корявом) языке, чтобы смарти их потом перегонял постоянно в PHP-код, а это куча никому не нужной работы.


Цитата(Feldmarschall @  22.7.2008,  20:55 Найти цитируемый пост)
Ты можешь привести пример канонического приложения с мвц?

Хм... Например, Wordpress, IPB если я не ошибаюсь

Это сообщение отредактировал(а) HackMan - 22.7.2008, 21:13


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Feldmarschall
Дата 22.7.2008, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



выше ты написал только, что универсального, единственно-правильного решения не существует.
И никакого не привел.
вот, допустим, у меня был сайт из 4 скриптов - index.php, shop.php, guestbook.php, news.php
как его переделать под MVC?

PM   Вверх
Fortop
Дата 22.7.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Feldmarschall @  22.7.2008,  20:55 Найти цитируемый пост)
Ты можешь привести пример канонического приложения с мвц?

А что значит канонического?

MVC - это не более чем схема организации проекта, которая упрощает работу с ним.

Да, ты можешь это все сделать на отдельных файлах, понимать логику связей между ними будет несколько сложнее.

Добавлено через 47 секунд
Цитата(Feldmarschall @  22.7.2008,  21:21 Найти цитируемый пост)
вот, допустим, у меня был сайт из 4 скриптов - index.php, shop.php, guestbook.php, news.php
как его переделать под MVC

А надо?

Какие между ними связи существуют? Если ни каких... то особого смысла нет.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Feldmarschall
Дата 22.7.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



то есть, если я работу с БД для гостевой, новостей и шопа солью в один файл, обработку гета с постом для них же - в другой, то это получится MVC, и логика связей упростится. Я правильно понял?

Добавлено через 1 минуту и 51 секунду
И еще.
если model у меня - это структура каталога - 
Код

/
index.php
news.php
guest.php
shop.php

сами файлы - контроллеры, а вью - используемый ими Смарти, то у меня тоже MVC?

Добавлено через 3 минуты и 23 секунды
Я дофига встречаю людей, которые постоянно говорят слово MVC.
Но ни от одного я не смог добиться, что это такое, и как оно применяется в их конкретных скриптах.

Добавлено через 7 минут и 13 секунд
Цитата(Fortop @  22.7.2008,  21:23 Найти цитируемый пост)
Какие между ними связи существуют?

допустиим, общая авторизация в шопе и в гостевой. Этого достаточно?
А можно попросить пример сайта с достаточными связями для мвц?
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.