Como lo que se quiere es mostrar como trabajar con los controladores y modelos y no hemos creado una clase base para estos ni para la vista incluiremos e instanciaremos los mismos en el momento que sea el caso pertinente, bueno acontinuación el nuevo código de nuestros modelos
usuario.php
/** * *Clase Modelo para gestionar los Usuarios */ /*Traemos la clase para trabajar las conexiones con la base de datos*/ require_once("db.php"); class Usuario { /** * *Definicion de atributos */ private $_connection; /** * * Metodo Constructor para inicializar la conexion con la DB */ public function __construct() { $this->_connection = new db(); } /** * *Metodo que gestiona el login de la aplicacion */ public function login($user,$password) { $login = $this->_connection->selectAll('users',array('user'=>$user,'password'=>$password)); if(count($login > 0)){ if($login[0]['estatus'] === 'habilitado'){ return true; } else{ return "deshabilitado"; } } else{ return false; } } /** * * Metodo para agregar los usuarios */ public function agregarUsuario($datos = array()) { if(!is_array($datos)){ return false; } $insert = $this->_connection->insert('users',$datos); if($insert){ return true; } else{ return "fallo"; } } /** * *Metodo para deshabilitar los usuarios */ public function deshabilitarUsuario($user) { $update = $this->_connection->update('users',array('estatus'=>'deshabilitado'),array('user'=>$user)); if($insert){ return true; } else{ return "fallo"; } } }Como podemos observar es una clase donde hacemos toda la lógica que tiene que ver con la gestión de usuarios, dentro de la misma se instancia la clase DB para trabajar con la base de datos (la clase DB es la implementada en este artículo).
UsuariosController.php
session_start(); require_once("model/usuario.php"); class UsuariosController { private $model = new Usuario(); public function login($user,$pass) { if($_SERVER['REQUEST_METHOD'] == "POST"){ $login = $this->model->login($user,$pass); if($login){ $_SESSION['login'] = "si"; header("location: index.php"); exit; } elseif($login === "deshabilitado"){ unset($_SESSION['login']); $_SESSION['messaje'] = "Usuario Deshabilitado"; header("location:index.php"); exit; } else{ unset($_SESSION['login']); $_SESSION['messaje'] = "Usuario o Contraseña incorrecto"; header("location:index.php"); exit; } else{ header("location:login.php"); exit; } } }
En el caso del controlador podemos visualizar que es una clase que instancia el modelo y llama a sus métodos de la lógica segun una acción, en este caso solo indicamos la del login para no extendernos tanto, lo importante es que se vea que el controlador no tiene ninguna lógica del negocio como plantean algunas personas, sino que en este se llama a la lógica del mismo según la acción indicada y según el caso este llamara a la vista correspondiente.
También es importante destacar que por cada acción (método) del controlador que realicemos debemos de crear una vista (código html) de tal manera que este tenga a donde redirigir y mandar los mensajes al usuario si esto es pertinente.
Como podemos ver el MVC es más útil cuando se trabaja de manera orientada a objetos, aunque esta es solo una aplicación sencilla de un login, podemos ver algo mas avanzado sobre este patrón en este artículo MVC avanzado donde el autor nos muestra como crear las clases para gestionar controladores y vistas de una gran manera, espero que esta pequeña introducción a este patrón de diseño les sirva como base en lo referente a este patrón, saludos
No hay comentarios:
Publicar un comentario