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?
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?
Risposte:
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
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.
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.
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.
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.