Está en la página 1de 5

Modelo vista controlador (MVC) en PHP

En programación, podemos encontrarnos con distintas formas de organizar la lógica y el código de


nuestro software. Es recomendable encontrar una buena forma, para evitar cometer uno de los errores
más complicados de arreglar, no poseer un código ordenado y bien aplicado.
El paradigma modelo vista controlador (MVC) es un patrón de diseño que separa el código en tres
capas. Utilizar un patrón de diseño a menudo es muy recomendable, ya que es una forma estandarizar
nuestro código, optimizarlo y hacer que sea más legible.

MVC divide las aplicaciones en tres niveles de abstracción:


1. Modelo: es la lógica de negocios. Es decir las clases y métodos que se comunican directamente
con la base de datos.
2. Vista: es la encargada de mostrar la información al usuario, de forma gráfica y legible.
3. Controlador: el intermediario entre la vista y el modelo, se encarga de controlar las
interacciones del usuario en la vista, pide los datos al modelo y los devuelve de nuevo a la vista
para que esta los muestre al usuario. Es decir las llamadas a clases y métodos, y los datos
recibidos de formularios.

¿Como funciona el MVC?


El funcionamiento básico del patrón MVC, puede resumirse en:
1. El usuario realiza una petición.
2. El controlador captura la petición.
3. Hace la llamada al modelo correspondiente.
4. El modelo sera el encargado de interactuar con la base de datos.
5. El controlador recibe la información y la enviá a la vista.
6. La vista muestra la información.

Fuente: phpzag.com
¿Como implementar el MVC en PHP?
Para implementar el MVC es imprescindible crear una estructura de ficheros parecida a esta:

Veamos un ejemplo típico del uso del MVC con PHP.

Fichero: index.php

<?php
require_once("db/db.php");
require_once("controllers/personasController.php");
?>

Fichero: db.php

<?php
class Conectar{
public static function getConexion(){

require_once("config.php");
try {
$dsn = "mysql:host=".$params['host'].";dbname=".$params['dbname'];
$dbh = new PDO($dsn, $params['user'], $params['password']);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e){
echo $e->getMessage();
return false;
}
return $dbh;
}
}
?>

Fichero: model/personasModel.php

<?php
class personasModel{
private $con;

public function __construct(){


$this->con=Conectar::getConexion();
}
public function getPersonas(){
$stmt=$this->con->prepare("select * from personas;");

$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
?>

Fichero: contoller/personasController.php

<?php
//Llamada al modelo
require_once("models/personasModel.php");
$per=new personasModel();
$datos=$per->getPersonas();

//Llamada a la vista
require_once("views/personas_view.phtml");
?>
El controlador debe tener siempre esta estructura llamada al modelo y debajo a la vista, si hubiera mas
modelos y vistas se sigue haciendo así con todos.

Fichero: view/personas_view.phtml

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Personas</title>
</head>
<body>
<?php
foreach ($datos as $dato) {
echo $dato["nombres"]."<br/>";
}
?>
</body>
</html>

Fichero: config.php

<?php
$params = array(
'user'=>"root",
'dbname'=>"dbpruebas",
'password'=>"123456",
'host'=>"localhost"
);

?>

También podría gustarte