Quand utiliser MVC

11

Je construis un site avec PHP et un backend MySQL. Mais, je n'utilise actuellement aucun type de framework. Dois-je utiliser Model View Controller?

Ryan
la source
3
Vous n'avez pas nécessairement besoin d'utiliser un framework pour utiliser le modèle de conception MVC. Vous pouvez structurer votre propre code pour utiliser MVC.
Amy Anuszewski,
5
Vous demandez-vous si vous devez utiliser un framework ou si vous devez utiliser l'approche MVC en général?
Adam Lear

Réponses:

11

Ma règle d'or:

toute page qui accède à une base de données ou nécessite toute forme d'entrée utilisateur sera plus facile à gérer avec une structure MVC.

Vous n'avez pas nécessairement besoin d'aller avec un framework entier, si le site est assez simple, vous pouvez utiliser une classe Page Controller simple pour chaque page qui le requiert ( voir ci-dessus ). Ce n'est pas une solution évolutive pour vous - alors gardez à l'esprit les objectifs à long terme du projet.

Voici un aperçu d'une configuration de PageController (rapidement piratée):

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
sunwukung
la source
3

Je dirais que ce serait bien s'il y avait une chance que le site se développe au-delà d'une taille non triviale. La raison principale est que vous gagnez une meilleure capacité de changer et d'entretenir le site à l'avenir et la maintenance est la majeure partie du travail sur la plupart des projets. Il vous offre une bonne séparation des préoccupations, de l'organisation du site et permet d'éviter le code répétitif et désordonné.

MVC est un modèle bien connu et accepté pour les sites Web et qui vous aidera si vous faites participer d'autres personnes au projet. À cette fin, vous voudrez probablement choisir un cadre établi pour commencer.

Clé en main
la source
1

Vous n'avez pas fourni de détails qui pourraient aider à répondre à la question, mais ma recommandation par défaut dans ce cas est "oui, utilisez un framework MVC". N'utilisez une solution personnalisée que lorsque vous êtes vraiment sûr d'en avoir besoin.

Adam Byrtek
la source
1

En tant qu'architecture, MVC se concentre sur la division de votre projet / page Web en plusieurs parties. Cela peut vous faciliter la vie lorsque vous devrez modifier quelque chose dans le code ou l'interface utilisateur.

En règle générale, si vous vous attendez à des changements dans les spécifications de votre projet, en particulier lorsque ces changements affectent l'ensemble du code, optez pour l'architecture qui vous oblige à diviser le code en minuscules morceaux de lego.

Thanos Papathanasiou
la source
1

Pas à ce stade. Attendez que votre site devienne plus grand et plus salissant. Vous vous demanderez - que puis-je faire pour rendre les choses moins salissantes? Vous lirez un article sur MVC et vous l'adorerez. Vous ne vous demanderez plus de l'utiliser ou non. Tu sauras. Ce serait le moment de commencer à l'utiliser.

Emanuil Rusev
la source