Quando utilizzare MVC

11

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

    
posta Ryan 28.05.2011 - 13:26
fonte

5 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 disporre di un intero framework, se il sito è abbastanza semplice, è possibile utilizzare un semplice Controller di pagina per ogni pagina che lo richiede ( vedi sopra ). Questa non è una soluzione scalabile, bada bene, quindi ricorda gli obiettivi a lungo termine del progetto.

Ecco un abbozzo di una configurazione di PageController (rapidamente hackerata 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
    
risposta data 28.05.2011 - 18:23
fonte
3

Direi che sarebbe positivo se ci fosse la possibilità che il sito potesse crescere oltre una dimensione non banale. La ragione principale è che si ottiene una migliore capacità di cambiare e mantenere il sito in futuro e la manutenzione è la maggior parte del lavoro sulla maggior parte dei progetti. Ti offre una buona separazione di preoccupazioni, organizzazione del sito e aiuta a evitare codice ripetitivo e disordinato.

MVC è un modello ben noto e accettato per i siti Web e questo ti aiuterà se porti altre persone nel progetto. A tal fine, probabilmente vorrai scegliere un framework stabilito per iniziare.

    
risposta data 28.05.2011 - 14:51
fonte
1

Non hai fornito dettagli che possano aiutarti a rispondere alla domanda, ma in questo caso la mia raccomandazione predefinita è "sì, usa un framework MVC". Vai con una soluzione personalizzata solo quando sei veramente sicuro di averne bisogno.

    
risposta data 28.05.2011 - 15:33
fonte
1

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

Regola empirica, se ti aspetti cambiamenti nelle specifiche del tuo progetto specialmente quando queste modifiche influenzano l'intero codice, quindi vai con l'architettura che ti obbliga a suddividere il codice in piccoli pezzi lego.

    
risposta data 07.11.2011 - 13:30
fonte
1

Non a questo punto. Aspetta che il tuo sito diventi più grande e più disordinato. Ti chiederai: cosa posso fare per rendere le cose meno disordinate? Leggerai un articolo su MVC e lo amerai. Non ti starai chiedendo se usarlo o meno. Lo saprai. Quello sarebbe il momento di iniziare ad usarlo.

    
risposta data 28.05.2011 - 19:12
fonte

Leggi altre domande sui tag