Quando utilizzare MVC


11

Sto costruendo un sito con PHP e un backend MySQL. Ma al momento non sto usando alcun tipo di framework. Dovrei usare Model View Controller?


3
Non è necessario utilizzare un framework per utilizzare il modello di progettazione MVC. È possibile strutturare il proprio codice per utilizzare MVC.
Amy Anuszewski,

5
Stai chiedendo se dovresti usare un framework o se dovresti usare l'approccio MVC in generale?
Adam Lear

Risposte:


11

La mia regola empirica:

qualsiasi pagina che colpisce un database o richiede qualsiasi forma di input dell'utente sarà più facile da gestire con una struttura MVC.

Non è necessario necessariamente utilizzare un intero framework, se il sito è abbastanza semplice, è possibile utilizzare una semplice classe Page Controller per ogni pagina che lo richiede ( vedere sopra ). Questa non è una soluzione scalabile, intendiamoci, quindi tenete presente gli obiettivi a lungo termine del progetto.

Ecco un abbozzo di una configurazione di PageController (rapidamente compromessa insieme):

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

Direi che sarebbe positivo se ci fosse la possibilità che il sito potesse crescere oltre dimensioni non banali. Il motivo principale è che acquisisci una migliore capacità di modificare e mantenere il sito in futuro e la manutenzione è la maggior parte del lavoro sulla maggior parte dei progetti. Ti dà una bella separazione di preoccupazioni, organizzazione del sito e aiuta a evitare il codice ripetitivo e disordinato.

MVC è un modello ben noto e accettato per i siti Web e che aiuterà se si coinvolgono altre persone nel progetto. A tal fine probabilmente vorrai scegliere un framework consolidato per iniziare.


1

Non hai fornito alcun dettaglio che possa aiutare a rispondere alla domanda, ma la mia raccomandazione predefinita in tal caso è "sì, usa un framework MVC". Scegli una soluzione personalizzata solo quando sei davvero sicuro di averne bisogno.


1

Come architettura, MVC si concentra sulla suddivisione del progetto / pagina Web in più parti. Questo può semplificarti la vita quando dovrai cambiare qualcosa nel codice o nell'interfaccia utente.

Regola empirica, se ti aspetti cambiamenti nelle specifiche del tuo progetto, specialmente quando tali cambiamenti interessano l'intero codice, segui l'architettura che ti costringe a suddividere il codice in minuscoli pezzi lego.


1

Non a questo punto. Attendi fino a quando il tuo sito diventa più grande e più disordinato. Ti chiederai: cosa posso fare per rendere le cose meno disordinate? Leggerai un articolo su MVC e lo adorerai. Non ti chiederai più se usarlo o meno. Lo saprai. Sarebbe il momento di iniziare a usarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.