Ejemplo del paradigma modelo vista controlador 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.
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.
Su vamos a utilizar este patrón de diseño, es importante conocer también cómo
funciona POO (programación orientada a objetos). En nuestro caso, utilizaremos
el lenguaje de programación PHP.
funciona POO (programación orientada a objetos). En nuestro caso, utilizaremos
el lenguaje de programación PHP.
Definiciones
Modelo
Gestiona todo lo relacionado con la información y la iteración con los datos de
nuestra aplicación. Todas las peticiones de acceso a los datos pasará por esta capa.
Gestiona todo lo relacionado con la información y la iteración con los datos de
nuestra aplicación. Todas las peticiones de acceso a los datos pasará por esta capa.
Controlador
Une la vista y el diseño. El usuario solicitará información por medio de la vista
y esta hará la petición al controlador. Posteriormente, este, realizará la petición
al modelo.
Une la vista y el diseño. El usuario solicitará información por medio de la vista
y esta hará la petición al controlador. Posteriormente, este, realizará la petición
al modelo.
Vista
Es la capa que nos mostrará la información formateada. También desde dónde
el usuario puede solicitar más información.
Es la capa que nos mostrará la información formateada. También desde dónde
el usuario puede solicitar más información.
Ejemplo
Este es un ejemplo muy básico. Creamos una base de datos de los servicios
que podría realizar un taller y operamos con ella utilizando el paradigma MVC.
que podría realizar un taller y operamos con ella utilizando el paradigma MVC.
Estructura:
BD:
controllers/controlador.php
<?php
require_once("../models/modelo.php");
$services = new Service();
$datos = $services->getServicios();
require_once("../views/vista.php");
?>
models/modelo.php
<?php
class Service {
private $servicio;
private $db;
public function __construct() {
$this->servicio = array();
$this->db = new PDO('mysql:host=localhost;dbname=ejemplo_mvc', "root", "");
}
private function setNames() {
return $this->db->query("SET NAMES 'utf8'");
}
public function getServicios() {
self::setNames();
$sql = "SELECT id, nombre, precio FROM servicio";
foreach ($this->db->query($sql) as $res) {
$this->servicio[] = $res;
}
return $this->servicio;
$this->db = null;
}
public function setServicio($nombre, $precio) {
self::setNames();
$sql = "INSERT INTO servicio(nombre, precio) VALUES ('" . $nombre . "', '" . $precio . "')";
$result = $this->db->query($sql);
if ($result) {
return true;
} else {
return false;
}
}
}
?>
views/vista.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo MVC con PHP</title>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" >
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<header class="text-center">
<h1>Ejemplo MVC con PHP</h1>
<hr/>
<p class="lead">Creamos una base de datos de los servicios <br/>
que podría realizar un taller y <br/>
operamos con ella utilizando el paradigma MVC</p>
</header>
<div class="col-lg-6 text-center">
<hr/>
<h3>Listado de servicios</h3>
<table class="table">
<tr>
<td><strong>SERVICIO</strong></td>
<td><strong>PRECIO</strong></td>
</tr>
<?php
for ($i = 0; $i < count($datos); $i++) {
?>
<tr>
<td><?php echo $datos[$i]["nombre"]; ?></td>
<td><?php echo $datos[$i]["precio"]; ?> €</td>
</tr>
<?php
}
?>
</table>
<a href="../index.php"> <i class="fa fa-arrow-circle-left"></i> Volver a la página principal</a>
<hr/>
</div>
<footer class="col-lg-12 text-center">
Adaweb - <?php echo date("Y"); ?>
</footer>
</div>
</body>
</html>
index.php
<!DOCTYPE html>
<?php
if ((isset($_POST['nombre'])) && ($_POST['nombre'] != '') && (isset($_POST['precio'])) && ($_POST['precio'] != '')) {
include "models/modelo.php";
$nuevo = new Service();
$asd = $nuevo->setServicio($_POST['nombre'], $_POST['precio']);
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo MVC con PHP</title>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" >
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<header class="text-center">
<h1>Ejemplo MVC con PHP</h1>
<hr/>
<p class="lead">Creamos una base de datos de los servicios <br/>
que podría realizar un taller y <br/>
operamos con ella utilizando el paradigma MVC</p>
</header>
<div class="row">
<div class="col-lg-6">
<form action="#" method="post" class="col-lg-5">
<h3>Nuevo servicio</h3>
Nombre: <input type="text" name="nombre" class="form-control"/>
Precio: <input type="text" name="precio" class="form-control"/>
<br/>
<input type="submit" value="Crear" class="btn btn-success"/>
</form>
</div>
<div class="col-lg-6 text-center">
<hr/>
<h3>Listado de servicios</h3>
<a href="controllers/controlador.php"><i class="fa fa-align-justify"></i> Acceder al listado de servicios</a>
<hr/>
</div>
</div>
<footer class="col-lg-12 text-center">
Adaweb - <?php echo date("Y"); ?>
</footer>
</div>
</body>
</html>
Comentarios
Publicar un comentario