Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Аналог приведенного подхода


Автор: Platon 24.9.2007, 16:04
Здравствуйте, уважаемые.

Осень хосеса перейти на Java с PHP, но что-то пока усилия тчетны.
В PHP я выработал вполне прозрачную схему представления данных.

И так поехали.
Код

class View {
    
    function View() {
        
    }
    
    function fetch() {
        ob_start();
        $this->display();
        $res = ob_get_contents();
        ob_end_clean();
        return $res;
    }
    
    function display() {
        $this->_done();
    }
    
    function cancel() {
        ob_end_clean();
    }

    function _done() {
    }
}

Класс, родитель для всех остальных "представителей", может сразу выводить данные в stdout или выводить в строку.

остальное:
Код

class Widget extends View {
    function Widget($name) {
        $this->name = $name;
    }

    function _done() {
        include dirname(__FILE__) . "/widget_template.tpl";
    }
}


widget_template.tpl

Код

<b>Привет <?= $this->name ?></b>


Код

class ViewFrame extend View {

    function ViewFrame(&$widget) {
       $this->widget =& $widget;
    }

    function _done() {
        include dirname(__FILE__) . "/view_frame.tpl";
    }
}

view_frame.tpl:
Код

<html>
<head>
</head>
<body>
<?php $this->widget->display() ?>
</body>
</html>


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

В принципе, почитав по форуму, увидел, что есть Velocity, по-моему очень подходящая аналогичная модель строительства страниц, если нет пожалуйста поправьте.
Единственное и думаю весомое, могут ли данные в Velocity сразу выводиться, а не копиться в памяти до самого последнего момента.
Имею ввиду: ViewFrame хранит не кусок HTML - кода widget'а, а только объект, который, когда его попросит ViewFrame, выдает свой код. При этом, если Widget что-то долго думает, работает с БД, шапка ViewFrame уже улетела клиенту.

Автор: Aoli 24.9.2007, 22:16
Ужас.
Может, не надо переходить на Яву? smile
Там ООП.
Необходимо уметь красивую архитектуру построить.
Куча страшных фраемворков. (И velocity - один из простейших.)
Придется ставить тяжелый сервер приложений.
Хостинг дорогой...

Автор: Platon 25.9.2007, 06:57
Aoli, это сарказм?! В таком случае прошу не издеваться, 

ООП я уважаю.
Насчет красивой архитектуры конечно надо будет постараться.
Фреймворки... ну, пока без них можно пожить. Velocity на сколько я знаю не фреймворк.
Тяжелый сервер, но более эффективный.
Хостинг... нет, это для личных целей, возможно и сервак свой.

Я бы и продолжал оставаться на PHP, если бы не его убогость.
Несколько раз покушался сделать игрушку на PHP, не хватает динамики :( да и отсутствие типов раздражает, а от их отсутствия путевого IDE нет.

Автор: Platon 25.9.2007, 20:01
Мдеее, кроме как поиздеваться, ничего не услышал.
Чтож, придется лезть в гору своими силами.

Автор: Tony 25.9.2007, 20:09
To 4to ты привёл називается custom tag.

Добавлено через 7 минут и 8 секунд
Тоесть идея такая: пишешь в jsp tak:
<%@ taglib uri="ww.some.com" prefix="а"  %>
<strong><a:time format="dd-MM-yyyy"/></strong>
a связан с библиотекой в каторй описан тег time, time в сою о4ередь описан с каким то классом(связан) там ты и пишеш реализацию.

Автор: Platon 25.9.2007, 20:41
Tony, огромное спасибо! начало положено, будем копать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)