Шаги к MVC или как правильно (или неправильно) сделать проект

$page='<html>
<head><title>'.$title.'</title>
<body>'.nav.'<br>'.$main.'</body>
</html>';
уж как-то все слишком просто.. это несолидно ;)..
ну навскидку чего у тебя в $main? тэги? плохо. Смена дизайна приведет к необходимости переписывания логики формирования переменной $main (от чего люди уж вот 3 страницы пытаются избавиться :)..
Мысли в трэде имхо более всего подходят для более-менее огромных проектов :D.. хотя...
кста, вы народ старательно (по xml-profile aka sitemap, контроллеры всякие) описываете Cocoon2 ;)...кто как к нему относится? мне нравицца ;)..
 
Вот объясните мне, может я чего не понимаю в концепции MVC, но ИМХО, smarty и xslt не в полной мере соответствуют этой модели, так как должны обеспечивать View но берут на себя часть функций Контроллера.
XSLT это универсальный язык обработки XML.
ООП -- универсальная методика программирования.

А MVC -- лишь 1 из шаблонов мышления!
Причем, судя по тому, как мало кто приходит к единому мнению об основах, сложный и негибкий шаблон.

Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
 
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
Было бы супер, если бы еще пример привел (не академический) =))
 
Originally posted by Orlis
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
думаю что объекты и классы в программе всегда представляют объекты конкретной предметной области , а "универсальные" академические алгоритмы конструирования всего то показывают как это сделать с максимальной эффективностью
 
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
Правда? Какой объект конкретной предметной области -- и какой конкретно -- представляет объект String?
 
Причем, судя по тому, как мало кто приходит к единому мнению об основах, сложный и негибкий шаблон.
Вот как раз наоборот, простой и гибкий. Именно его гибкость позволяет разным людям трактовать его поразному.
 
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
Эта цитата наверно скоро побьет все рекорды по цитируемости;)

Объекты и классы в программе должны представлять объекты абстрактные сущности, которыми легко и удобно манипулировать (т.е. каркас предметной области), и на их основе (расширении если есть такой термин в ООП extends) построить уже конкретные объекты модели предметной области

если более проще взглянуть на вещи, то должен быть некий универсальный API, с помощью которого в наикротчайшие сроки осуществляется моделирование объектов предметной области.;)

PS.
С Контроллерами и Моделью я более-менее разобрался, в настоящее время я пытаюсь написать абстрактные классы Модели и Представления.
 
С Контроллерами и Моделью я более-менее разобрался, в настоящее время я пытаюсь написать абстрактные классы Модели и Представления.
Когда закончишь покажешь диаграмму классов? Очень интересно!
 
Когда закончишь покажешь диаграмму классов? Очень интересно!
OK, все будет free
только я как собака - диаграммы понимаю, а вот сам нарисовать не могу.
Если обезьяну посадить за компьютер, рано или поздно она напишет windows
когда вырастет не одно поколение обезьян за компом, то они напишут не только windows, но Oracle, Unix за одно и Войну и Мир. К сожалению, к этому времени человечество очевидно вымрет и мы не узнаем о результатах столь градиозного эксперимента
 
Может и узнаем
к концу нашей жизни она напишет только один драйвер.
Да там ничего сложного нет. Берешь лубую доку по UML и например Rational Rose и разбираешься
сам знаю, что сложного нет, вот потихо и разбираюсь, уже парк лет как разбираюсь ;)
 
Re: Уровень представления - рассуждения на тему шаблонизатор

Автор оригинала: Alexandre
Пример 2: Надо отобразить карточку товара, притом отображается выпадающий список категории товаров.

M- тянет из БД данные таблицы:
- товар = id
- все категории тоаров
и представляет их ввиде двух массивов.

В первом случае:
V - вызывает подшаблон 1, с отображением информации о товаре, и генерит выходной HTML-код.

вызывает подшаблон 2, с формированием элемента ComboBox категории товаров, и генерит выходной HTML-код (<SELECT>.... </SELECT>).
Ситуация усложняется с установкой начального значения ComboBox ( <Option selected> )
Категория, по идее, должна описываться отдельной моделью, так что к категории отдельно идет полный комплект MVC. При отображении же товара его V должен вызвать V категории для получения комбобокса (или контроллер категории?). Как они должны взаимодействовать между собой?

Кстати, второй способ ухудшает глобальную смену дизайна у системы (я имею в виду smarty, при этом стили я не считаю, в html не все можно с их помощью решить)
 
Категория, по идее, должна описываться отдельной моделью,
Если описывает Категорию - отдельной моделью, то:

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

Не проще ли Товару - дать необходимый набор аттрибутов и в его модель включить и Категорию.
 
Не проще ли Товару - дать необходимый набор аттрибутов и в его модель включить и Категорию.
ПРоще вообще не заморачиваться со всем MVC, но это не правильно, усложняет обслуживание/доработку, нельзя применить в других проектах.

Незнал как до этого назвать, теперь понял: все части приекта = это компоненты, которые делятся на собственную модель, собственненный вид (шаблон) и если необходимо, присутствует контролер.
 
Автор оригинала: Alexandre
Не проще ли Товару - дать необходимый набор аттрибутов и в его модель включить и Категорию.
В данном случае не проще, потому что с категориями тоже надо как-то работать - добавлять/удалять/редактировать, работать с деревом категорий/подкатегорий. Получается, что категории кардинально отличаются от товаров - у товаров не может быть подтоваров (смысла не имеет), да и набор свойств у товаров и категорий отличается (у категории только название и ид, может быть еще порядок расположения и родитель, хотя можно и еще пару свойств добавить при необходимости), а у товара просто набор свойств. Вот и выходят такие варианты:
а) один товар - одна категория (при отображении)
б) один товар - все категории (при редактировании)
в) несколько товаров - одна категория (то бишь содержимое категории)
г) несколько товаров - несколько категорий (у каждого товара своя)

Вот и вопрос, как они друг с другом должны взаимодействовать? Через контроллер? Или контроллер предназначен только для управления извне системы?
 
все части приекта = это компоненты, которые делятся на собственную модель, собственненный вид
у нас это называлось модулями, но возможно компоненты - тоже красивое название

-~{}~ 06.10.04 17:16:

Вот и вопрос, как они друг с другом должны взаимодействовать
есть над чем подумать.
 
Компонент "товар" является неотъемлемой частью компонента "каталог". (Или отъемлемой?)

Вот варианты:

1) (как у меня) контролер "каталог"а решает какие использовать компоненты ("каталог" и/или "товар").
2) Контролер верхнего уровня формирует модель каталога, его компоненты.
 
) контролер "каталог"а решает какие использовать компоненты ("каталог" и/или "товар").
2) Контролер верхнего уровня формирует модель каталога, его компоненты.
В моем понимании у меня один Контроллер, который все данные распихиваеат по Моделям, т.е. вызывает Соответствующий класс обработки данных соответствующей "Модели".

вообще существует два типовых подхода к MVC:
- Контроллер запросов
- Контроллер страниц

видно мое решение больше подходит под определение "Контроллер страниц" а твое под "Контроллер запросов"


---------------------------------------------------------------------------
Сколько людей, столько и взглядов на одни и теже вещи
 
В моем понимании у меня один Контроллер, который все данные распихиваеат по Моделям, т.е. вызывает Соответствующий класс обработки данных соответствующей "Модели".
"класс" или метод (или чтото другое)?
Можно пример образный?
 
Можно пример образный
Можно, но чуть позже...
Пока моя концепция только формируется, когда я ее разложу для себя по полочкам, то как и обещал - выложу на всеобщее обозрение.
 
Сверху