Sto lavorando sulla costruzione di un MVC leggero, soprattutto per il processo di apprendimento, ma vorrei che fosse abbastanza buono da utilizzare alla fine.Come caricare modello in un controller in MVC
Di seguito è riportato un esempio/demo di base su come potrebbe apparire un controller di base, supponiamo che l'URI sia stato elaborato e instradato verso questo controller e questi 2 metodi.
1) Ho bisogno di ottenere i dati dal database/cache/etc ... dentro le classi del modello, ho solo bisogno di aiuto su come dovrei caricare i miei modelli nel mio esempio controller di sotto, si può vedere che ho aggiunto questo sotto $profileData = $this->model->getProfile($userId)
che è appena inventato e non esiste, come potrei ottenere qualcosa del genere per funzionare comunque? O dovrei caricare il modello nella classe in un modo diverso?
2) Un sacco di pagine richiederà all'utente di aver effettuato il login nel sito. Dovrei elaborare quella parte di sotto nel controller per verificare se un utente è connesso, ad esempio, prima di costruire la pagina del profilo, controllare se l'utente è connesso, se non poi costruire una pagina di login, invece, e aggiungere questi controlli all'interno di ciascun metodo di controllo /pagina?
/**
* Example Controller
*/
class User_Controller extends Core_Controller {
// domain.com/user/id-53463463
function profile($userId)
{
//GET data from a Model
$profileData = $this->model->getProfile($userId);
$this->view->load('userProfile', $profileData);
}
// domain.com/user/friends/
function friends()
{
//GET data from a Model
$friendsData = $this->model->getFriendlist();
$this->view->load('userFriends', $friendsData);
}
}
nucleo
abstract class Core_Controller {
protected $view;
protected $model;
function __construct(DependencyContainer $dependencyContainer){
$this->view = new Core_View();
//$this->view = $dependencyContainer->get(view);
}
}
Grazie per le idee, e hai ragione, alcuni controller avranno probabilmente bisogno di più di un modello, soprattutto quando si costruisce un sito di tipo social network. – JasonDavis
sì, un altro svantaggio con l'esempio sopra riportato è che * istanzia * sempre il modello anche quando potresti non averne bisogno. Probabilmente non è un grosso problema, ma vale la pena notare che potresti fare un lavoro extra su alcune richieste. – gregghz