Estoy trabajando en la construcción de un MVC liviano, principalmente para el proceso de aprendizaje, pero me gustaría que sea lo suficientemente bueno para usarlo eventualmente.Cómo cargar el modelo en un controlador en MVC
A continuación se muestra un ejemplo/demo básico de cómo se vería un controlador básico, supongamos que el URI se ha procesado y enrutado a este controlador y estos 2 métodos.
1) Necesito obtener datos de la base de datos/caché/etc ... dentro de mis clases de modelos, solo necesito ayuda sobre cómo debo cargar mis modelos en mi controlador de ejemplo a continuación, puedes ver que he agregado esto debajo de $profileData = $this->model->getProfile($userId)
que está hecho y no existe, ¿cómo podría conseguir algo así para trabajar? ¿O debería cargar el modelo en la clase de una manera diferente?
2) Muchas páginas requieren que el usuario inicie sesión en el sitio. Debería procesar la parte siguiente en el controlador para verificar si un usuario está conectado, por ejemplo, antes de crear la página de perfil, verificar si el usuario está conectado, si no, crear una página de inicio de sesión y agregar estas verificaciones dentro de cada método de controlador /¿página?
/**
* 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);
}
}
núcleo
abstract class Core_Controller {
protected $view;
protected $model;
function __construct(DependencyContainer $dependencyContainer){
$this->view = new Core_View();
//$this->view = $dependencyContainer->get(view);
}
}
Gracias por las ideas, y tiene razón, algunos controladores probablemente necesitarán más de un modelo, especialmente cuando construyan un sitio de tipo red social. – JasonDavis
Sí, otra desventaja del ejemplo anterior es que * siempre * crea una instancia del modelo aunque no lo necesite. Probablemente no sea un gran problema, pero vale la pena señalar que puede estar haciendo un trabajo adicional en algunas solicitudes. – gregghz