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

chameleon

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

Orlis

Guest
Вот объясните мне, может я чего не понимаю в концепции MVC, но ИМХО, smarty и xslt не в полной мере соответствуют этой модели, так как должны обеспечивать View но берут на себя часть функций Контроллера.
XSLT это универсальный язык обработки XML.
ООП -- универсальная методика программирования.

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

Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
 

Screjet

Новичок
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
Было бы супер, если бы еще пример привел (не академический) =))
 

catoffsky

Guest
Originally posted by Orlis
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
думаю что объекты и классы в программе всегда представляют объекты конкретной предметной области , а "универсальные" академические алгоритмы конструирования всего то показывают как это сделать с максимальной эффективностью
 

Crazy

Developer
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
Правда? Какой объект конкретной предметной области -- и какой конкретно -- представляет объект String?
 

_RVK_

Новичок
Причем, судя по тому, как мало кто приходит к единому мнению об основах, сложный и негибкий шаблон.
Вот как раз наоборот, простой и гибкий. Именно его гибкость позволяет разным людям трактовать его поразному.
 

Alexandre

PHPПенсионер
Объекты и классы в программе должны представлять объекты конкретной предметной области, а не "универсальные" академические алгоритмы конструирования.
Эта цитата наверно скоро побьет все рекорды по цитируемости;)

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

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

PS.
С Контроллерами и Моделью я более-менее разобрался, в настоящее время я пытаюсь написать абстрактные классы Модели и Представления.
 

_RVK_

Новичок
С Контроллерами и Моделью я более-менее разобрался, в настоящее время я пытаюсь написать абстрактные классы Модели и Представления.
Когда закончишь покажешь диаграмму классов? Очень интересно!
 

Alexandre

PHPПенсионер
Когда закончишь покажешь диаграмму классов? Очень интересно!
OK, все будет free
только я как собака - диаграммы понимаю, а вот сам нарисовать не могу.
Если обезьяну посадить за компьютер, рано или поздно она напишет windows
когда вырастет не одно поколение обезьян за компом, то они напишут не только windows, но Oracle, Unix за одно и Войну и Мир. К сожалению, к этому времени человечество очевидно вымрет и мы не узнаем о результатах столь градиозного эксперимента
 

Alexandre

PHPПенсионер
Может и узнаем
к концу нашей жизни она напишет только один драйвер.
Да там ничего сложного нет. Берешь лубую доку по UML и например Rational Rose и разбираешься
сам знаю, что сложного нет, вот потихо и разбираюсь, уже парк лет как разбираюсь ;)
 

Screamer

Новичок
Re: Уровень представления - рассуждения на тему шаблонизатор

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

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

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

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

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

Alexandre

PHPПенсионер
Категория, по идее, должна описываться отдельной моделью,
Если описывает Категорию - отдельной моделью, то:

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

Не проще ли Товару - дать необходимый набор аттрибутов и в его модель включить и Категорию.
 

Screjet

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

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

Screamer

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

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

Alexandre

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

-~{}~ 06.10.04 17:16:

Вот и вопрос, как они друг с другом должны взаимодействовать
есть над чем подумать.
 

Screjet

Новичок
Компонент "товар" является неотъемлемой частью компонента "каталог". (Или отъемлемой?)

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

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

Alexandre

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

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

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


---------------------------------------------------------------------------
Сколько людей, столько и взглядов на одни и теже вещи
 

Screjet

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

Alexandre

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