MVC - это просто :)

1.44K
.
╭∩╮ (`-`) ╭∩╮
Итак, готовый MVC скрипт с активной моделью:
---
index.php
<?php

switch ($_GET['act']) {
    case'cat':
        $query = 'cat';
        include('model.php');
        break;

    case'dog':
        $query = 'dog';
        include('model.php');
        break;

    default:
        $content = 'Привет всем!';
        include('view.php');
}


model.php
<?php

$data = array(
    'dog' => 'Цобако: Шарик',
    'cat' => 'Котейко: Барсик'
);

$content = $data[$query];
include('view.php');


view.php
<?php

echo (isset($content) ? $content : '');


И все
это каноническая модель MVC с активной моделью, ибо модель сама в обход контроллера общается с представлением.
.
Fublin
AlkatraZ, ну на пример двух страничек ясно..а еси у сайта милион страниц ?
плюс вложения глубокие
.
╭∩╮ (`-`) ╭∩╮
как Вы сами догадываетесь, скрипт легко переделать на работу с ПАССИВНОЙ моделью
---
index.php
<?php

switch ($_GET['act']) {
    case'cat':
    case'dog':
        include('model.php');
        $content = $data[$_GET['act']];
        include('view.php');
    break;

    default:
        $content = 'Привет всем!';
        include('view.php');
}


model.php
<?php

$data = array(
    'dog' => 'Цобако: Шарик',
    'cat' => 'Котейко: Барсик'
);


view.php
<?php

echo (isset($content) ? $content : '');


тут уже модель не умеет общаться с представлением и только выдает данные контроллеру, который уже дальше сам распоряжается ими и передает в представление
.
AlkatraZ, давай дальше Модель у нас умеет только получать записи, нужен полный CRUD. Как реализовывать будишь?
.
погодите, не торопитесь.. вот нфига не понял..какой контролер и как он выберит кошку например..чтоб подлключить кейс с ккошаком..?
.
╭∩╮ (`-`) ╭∩╮
Fublin (18.05.2013 / 23:53)
AlkatraZ, ну на пример двух страничек ясно..а еси у сайта милион страниц ?
плюс вложения глубокие
Ранее я уже писал, что как ни странно, вы все видели в деле MVC, точнее MC, но не догадывались об этом гг.
---
1) Открываем наш JohnCMS, для примеру наш форум /forum/index.php
2) Смотрим в начале файла, где инклюдится все остальное:
$mods = array(
    'addfile',
    'addvote',
    'close',
    'deltema',
    'delvote',
    'editpost',
    'editvote',
    'file',
    'files',
    'filter',
    'loadtem',
    'massdel',
    'new',
    'nt',
    'per',
    'post',
    'ren',
    'restore',
    'say',
    'tema',
    'users',
    'vip',
    'vote',
    'who',
    'curators'
);
if ($act && ($key = array_search($act, $mods)) !== false && file_exists('includes/' . $mods[$key] . '.php')) {
    require('includes/' . $mods[$key] . '.php');
} else {
}

Дык это же контроллер
Все файлы, что у нас в папке форума /includes и которые подключает наш контроллер - это модели, ибо работают с данными

Единственно чего не хватает в JohnCMS - это Viev, нет шаблонизатора.
Прикрути шаблонизатор - вот тебе и MVC гг
.
╭∩╮ (`-`) ╭∩╮
UA95 (18.05.2013 / 23:56)
Про активные модели ещё не читал Есть преимущества,или кому как удобно?
Тут я думаю, кому как удобно.
Ты правильно заметил.
.
AlkatraZ, смысл что то прикручивать лишнее когда итак все работает ?
.
╭∩╮ (`-`) ╭∩╮
L!MP (18.05.2013 / 23:55)
AlkatraZ, давай дальше Модель у нас умеет только получать записи, нужен полный CRUD. Как реализовывать будишь?
А вот это уже относится к конкретным реализациям архитектуры MVC.
я выше привел пример JohnCMS без View, там реализован полный цикл CRUD
.
╭∩╮ (`-`) ╭∩╮
Fublin (19.05.2013 / 00:00)
AlkatraZ, смысл что то прикручивать лишнее когда итак все работает ?
Ну логично.
Просто я писал данный материал вот к чему.
MVC не так сложно, как этим пугают поклонники ООП, можно сделать все просто.
На примере JohnCMS я показал реально действующие и полноценно реализующие CRUD (Создание чтение обновление удаление) модули, которым не хватает только View.
Всего: 45