Ho posto questa domanda a StackOverflow e non ho ricevuto risposta (chiusa come duplicata senza risposta). Sto sperimentando con OOP e ho il seguente layout MVC di base:
class Model {
// do database stuff
}
class View {
public function load($filename, $data = array()) {
if(!empty($data)) {
extract($data);
}
require_once('views/header.php');
require_once("views/$filename");
require_once('views/footer.php');
}
}
class Controller {
public $model;
public $view;
function __construct() {
$this->model = new Model();
$this->view = new View();
// determine what page we're on
$page = isset($_GET['view']) ? $_GET['view'] : 'home';
$this->display($page);
}
public function display($page) {
switch($page) {
case 'home':
$this->view->load('home.php');
break;
}
}
}
Queste classi sono riunite nel mio file di installazione:
// start session
session_start();
require_once('Model.php');
require_once('View.php');
require_once('Controller.php');
new Controller();
Ora dove inserisco il mio codice di connessione al database e come faccio a passare la connessione al modello?
try {
$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE.'', DB_USERNAME, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $err) {
die($err->getMessage());
}
Ho letto di Dependency Injection, delle fabbriche e di altri modelli di design diversi che parlano di come mantenere SQL fuori dal modello, ma è tutto da capo con esempi astratti. Qualcuno può per favore mostrarmi un esempio pratico semplice?