Коли використовувати MVC


11

Я будую сайт з PHP та MySQL. Але я наразі не використовую жодного типу фреймворків. Чи повинен я використовувати контролер перегляду моделі?


3
Вам не обов'язково використовувати рамку для використання шаблону дизайну MVC. Ви можете структурувати власний код для використання MVC.
Емі Анушевський

5
Ви запитуєте, чи варто вам використовувати рамку чи взагалі слід використовувати підхід MVC?
Адам Лір

Відповіді:


11

Моє правило:

будь-яка сторінка, яка потрапляє в базу даних або вимагає будь-якої форми введення користувача, буде простіше в управлінні зі структурою MVC.

Вам не обов'язково працювати з цілою рамкою, якщо сайт досить простий, ви можете використовувати простий клас контролера сторінки для кожної сторінки, яка потребує цього ( див. Вище ). Це не є вами масштабним рішенням, тому пам’ятайте про довгострокові цілі проекту.

Ось приблизний ескіз налаштування (швидко зламаного разом) PageController:

index.php
--------------------------------------------------------

include 'Controller.php';
include 'Db.php';//db connection
include 'View.php';
$Controller = new MyController(new Db(), new View());
$Controller->route($_GET);
$Controller->render();


Controller.php
--------------------------------------------------------
class Controller($db){

    /* ensure all collaborators are provided */
    public function __construct(Db $db, View $view){
         $this->db = $db;
         $this->db->connect(array('host','db','user','pass'));
         $this->view = $view;
    }

    /* load the appropriate model data */
    public function route($_GET){
        //load the right model data and template
        switch($_GET){
            case $_GET['articles'] === 'cats':
                $this->vars = $this->db->get('cats');
                $this->template = 'cats.php';
                break;
            case $_GET['articles'] === 'dogs':
                break;
                $this->vars = $this->db->get('dogs');
                $this->template = 'dogs.php';
            default:
             $this->vars = array();
        }

    } 

    /* render an html string */
    public function render(){
        echo $this->view->render($this->template,$this->vars);
    }

}

View.php
------------------------------------------------------------
class View.php
    {
     /* return a string of html */
     public function render($template,$vars){
            // this will work - but you could easily swap out this hack for 
            // a more fully featured View class
            $this->vars = $vars;
            ob_start();
            include $template;
            $html = ob_get_clean();
            return $html;
         }

     }

template cats.php
--------------------------------------------------------
$html = '';
$row_template = '%name%,%breed%,%color%';
foreach($this->vars as $row){
    $html .= str_replace(
        array(%name%,%breed%,%color%),
        array($row['name'],$row['breed'],$row['color']),
        $row_template);
    }
echo $html;

Db.php
---------------------------------------------------------------
I haven't bothered writing a db class... you could just use PDO

3

Я б сказав, що було б добре, якщо є ймовірність, що сайт може перевищити нетривіальний розмір. Основна причина полягає в тому, що ви отримуєте кращі можливості змінювати та підтримувати сайт у майбутньому, а обслуговування - це більша частина роботи над більшістю проектів. Це дає вам гарне розмежування проблем, організацію сайту та допомагає уникнути повторного та безладного коду.

MVC - це добре відомий та прийнятий для веб-сайтів шаблон, який допоможе, якщо ви залучите інших людей до проекту. З цією метою ви, мабуть, захочете вибрати для початку встановлену основу.


1

Ви не надали жодних деталей, які могли б допомогти відповісти на питання, але моя рекомендація за замовчуванням у такому випадку - "так, використовуйте рамку MVC". Заходьте з користувацьким рішенням лише тоді, коли ви справді впевнені, що вам це потрібно.


1

Як архітектура, MVC зосереджується на розділенні вашого проекту / веб-сторінки на кілька частин. Це може полегшити ваше життя, коли вам доведеться щось змінити в коді або в інтерфейсі користувача.

Правило, якщо ви очікуєте змін у специфікаціях щодо вашого проекту, особливо коли ці зміни стосуються всього коду, тоді перейдіть до тієї архітектури, яка змушує вас розбити код на крихітні лего.


1

Не в цей момент. Зачекайте, поки ваш веб-сайт стане більшим і сильнішим. Ви запитаєте себе - що я можу зробити, щоб зробити речі менш брудними? Ви прочитаєте статтю про MVC і вам сподобається. Ви більше не будете питати, використовувати його чи ні. Ти дізнаєшся. Це був момент почати використовувати його.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.