Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > mvc framework


Автор: icepro 26.11.2009, 03:08
Есть идея начать писать сабж, только перед стартом решил найти оптимальный вариант архитектуры, свой вариант приводить не буду а вот желающих прошу. Выскажитесь народ, как оптимальней сформировать сабж. Фреймворк стандартный - набор классов для работы с чем угодно (база, формы, математика, и и.д.). Больше интересует как это все красиво и оптимально впихнуть в систему MVC. Не стесняйтесь, куски кода приветствуются. Заранее спасибо!

Автор: nerezus 26.11.2009, 04:46
icepro, расскажи, чем именно тебе не понравились существующие фреймворки?

Автор: icepro 26.11.2009, 12:22
Вот объясните почему сегда тема начинается не по существу? Ну я же вроде вопрос задал не так: "Почему мне не нравятся существующие фреймворки?". Мне они всем нравятся, просто ради получения опыта нада кодить, вот и родилась идея.

Есть каркас MVC (ниже). Теперь нада как то оптимально начать его обвешивать классами фв. Вот тут то мне и нужна помощь. Нумен пример оптимальной архитектуры.

Код

<?

class Controller 
{
    private $input;
    private $error;
    private $data;

    function __construct() 
    {
        $this->error = false;
        $this->data = null;
        $this->input = null;
    }

    function processData() 
    {
        $this->userRequest();
        
        if ($this->error)
            View::displayError($this->error);
        else
        if ($this->data != null)
            View::displayPage('t1',$this->data);
        else
            View::displayDefaultPage();
    
    }
    
    function userRequest() 
    {
        if (isset($_GET['var']))
        {
            $this->validate();
                
            if (!$this->error) 
            {
                $model = new Model();
                $model->calculate($this->input);
                $this->data = $model->getData();

                if (!($this->data))
                {
                    $this->error = 'wrong results';
                }
                else
                {
                    $this->result = $result;
                }
            }
        }
    }
    
    function validate() 
    {    
        if (empty($_GET['var']))
        {
            $this->error = 'not valid';
        }
        else
        {
            $this->input = $_GET['var'];
        }
    }

}

class View 
{
    static function displayDefaultPage() 
    {
        echo "Default page";
    }
    
    static function displayError($error) 
    {
        echo $error;
        View::displayDefaultPage();
    }
    
    static function displayPage($template,$data) 
    {
        echo "Template - ".$template.", data - ".$data;
    }
}


class Model {

    private $data;

    function __construct() 
    {    
        $this->data = null;
    }

    function calculate($in) 
    {    
        $this->data = $in;
        $this->data = $in*$in;
    }

    function getData() 
    {
        if ($this->data)
        {        
            return $this->data;
        }
        else
        {
            return null;
        }
    }

}

$controller = new Controller();
$controller->processData();
?>

Автор: SamDark 26.11.2009, 14:49
icepro, 
Из всех рассмотренных мной фреймворков больше всего понравился в плане архитектуры Yii. Посмотрите исходный код, он там довольно красивый и хорошо документирован.

Автор: nerezus 26.11.2009, 14:55
Цитата

Вот объясните почему сегда тема начинается не по существу?
 Ну вот я и вывел ее в нужное русло ;)

Цитата

Вот тут то мне и нужна помощь. Нумен пример оптимальной архитектуры.

icepro, расскажи, чем именно тебе не понравились существующие фреймворки?

Автор: icepro 26.11.2009, 23:47
Цитата(nerezus @  26.11.2009,  14:55 Найти цитируемый пост)
icepro, расскажи, чем именно тебе не понравились существующие фреймворки? 

(можно было и не отвечать все-равно пользы от вашего поста я не вижу)

Я вас не понимаю, я собираюсь писать фреймворк ради того что б получить опыт!! В вашем вопросе я вижу двусмысленность:
- толи вы намекаете "пококай исходники уже готовых продуктов и разберись сам", если так то тогда зачем нужен форум, ведь явно уже ктото делал такое и наступал на какието грабли
- толи второй вариант: не парь мозги и бери готовый, но этот вариант мне не подходит, так как писать я все-равно буду.

Автор: nerezus 27.11.2009, 00:01
Пока не посмотришь готовые решения - не поймешь, как надо делать.
А если и поймешь - то вместо месяца потратишь годы.

Автор: icepro 27.11.2009, 03:11
nerezus, сам то разрабатывал что то подобное? нет? тогда зачем флудить? да? тогда почему бы не посоветовать?

Автор: nerezus 27.11.2009, 03:50
Цитата

да? тогда почему бы не посоветовать?
 Не надо дурачка разыгрывать. Я тебе дал совет. И повторил его.

Автор: SamDark 27.11.2009, 14:06
icepro, 
nerezus верно посоветовал. Задача у вас вполне стандартная, так что критически рассмотреть существующие решения — самый верный способ понять как надо (или не надо) делать.

Автор: icepro 27.11.2009, 20:24
я не пишу МВЦ для продажи или для такого уровня как гуляют в интернете, мне нужен простой каркас, а ради каркаса гребти тонны кода как то неохото.. вот и прошу совета, кто уже стыкался с такой задачей, изложите ключевые моменты.

Автор: nerezus 27.11.2009, 20:32
Никто тонны кода тебе смотреть не предлагает. Тебе предложили посмотреть существующие решения - какой смысл нам пересказывать документацию?

Ответ дан, тему закрываю ввиду отсутствия конструктива.

Автор: MoLeX 28.11.2009, 08:10



icepro, посмотри Yii (SamDark уже об нем сказал) и http://codeigniter.com/


Цитата(icepro @  27.11.2009,  20:24 Найти цитируемый пост)
мне нужен простой каркас, а ради каркаса гребти тонны кода как то неохото..

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

Автор: Ипатьев 28.11.2009, 10:06
icepro, в вашем вопросе я вижу двусмысленность:
- смотреть готовые фреймворки я не буду, но куски кода приветствуются. Так нужны вам эти куски, или не нужны?
"Вы или трусики наденьте, или крестик снимите", как говорится в известном анекдоте. 

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

Вообще, я считаю, что фремворк надо писать только в том случае, когда таких вопросов не возникает в принципе. Ты точно знаешь, что хочешь получить, и как это должно выглядеть. Потому что появление набора инструментов долждно быть естественным, а не искусственным. Быть естественным продолжением текущих проектов.
В противном случае лучше взять готовое. 

Автор: nerezus 28.11.2009, 14:16

Автор: MoLeX 29.11.2009, 17:26

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