AlexVN
Новичок
Использование MVC паттерна
Доброго дня.
Приходят в голову идеи, в связи с разработкой SiteFramework.
Предисловие: объекты страницы находятся в древовидной структуре, каждый элемент которой является текстовым или предствляет собой экземпляр контрола. Контрол инкапсулирует в себе свойства для работы и методы рендеринга (составление HTML).
Например:
Нальнейшее развитие событий: Начитавшись про MVC есть идея разделить View и Model. В частности, сделать Model полностью основанной на XML DOM от PHP5. Для задания свойств и их возможных значений использовать XSD. Тогда образуются классы вида:
Т.е. все функции render переходят в отдельные классы. Валидаторы тоже переходя в отельный класс (группу классов).
Аналогичным образом, все вызовы onClick, onSubmit, и т.д. (т.е. server-events) переходят в контроллер.
Теперь, для чего это может быть полезно:
На sitepoint в дискуссии спросили на счет поддержки Smarty. Соответственно, можно для этого переписать только View, правильно? Кроме того, есть еще вывод в XHML/XML, а не только в HTML.
Вопрос: все ли я правильно понял на счет MVC и его можно так применить?
С уважением,
Александр
Доброго дня.
Приходят в голову идеи, в связи с разработкой SiteFramework.
Предисловие: объекты страницы находятся в древовидной структуре, каждый элемент которой является текстовым или предствляет собой экземпляр контрола. Контрол инкапсулирует в себе свойства для работы и методы рендеринга (составление HTML).
Например:
Код:
class SFLabel extends SFControl {
var $text;
var $escapeHTML;
function SFLabel() {
$this->escapeHTML = true;
$this->text = null;
parent::SFControl();
$this->nodeName = 'Label';
$this->statefull = true;
}
function render(&$output) {
if ($this->visible)
$this->raiseEvent($this->BEFORE_RENDER);
if ($this->visible)
$output->append($this->escapeHTML ? htmlspecialchars($this->text) : $this->text);
}
}
Код:
class LabelRenderer extends SFControlRenderer {
function render($model, $output) {
if ($model->visible)
$this->raiseEvent($this->BEFORE_RENDER);
if ($model->visible)
$output->append($model->escapeHTML ? htmlspecialchars($model->text) : $model->text);
}
}
Аналогичным образом, все вызовы onClick, onSubmit, и т.д. (т.е. server-events) переходят в контроллер.
Теперь, для чего это может быть полезно:
На sitepoint в дискуссии спросили на счет поддержки Smarty. Соответственно, можно для этого переписать только View, правильно? Кроме того, есть еще вывод в XHML/XML, а не только в HTML.
Вопрос: все ли я правильно понял на счет MVC и его можно так применить?
С уважением,
Александр