Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Veamos un ejemplo típico del uso del MVC con PHP. Para comprenderlo seria
ideal que supieras PHP Orientado a objetos y como funciona la extensión MySQLi
# index.php
1 <?php
2 require_once("db/db.php");
3 require_once("controllers/personas_controller.php");
4 ?>
# db.php
1
2 <?php
class Conectar{
3 public static function conexion(){
4 $conexion=new mysqli("localhost", "root", "", "mvc");
5 $conexion->query("SET NAMES 'utf8'");
6 return $conexion;
}
7 }
8 ?>
9
# model/personas_model.php
1 <?php
2 class personas_model{
3 private $db;
private $personas;
4
5 public function __construct(){
6 $this->db=Conectar::conexion();
7 $this->personas=array();
8 }
public function get_personas(){
9 $consulta=$this->db->query("select * from personas;");
10 while($filas=$consulta->fetch_assoc()){
11 $this->personas[]=$filas;
12 }
13 return $this->personas;
}
14 }
15 ?>
16
17
18
# contoller/personas_controller.php
1
<?php
2 //Llamada al modelo
3 require_once("models/personas_model.php");
4 $per=new personas_model();
5 $datos=$per->get_personas();
6
7 //Llamada a la vista
require_once("views/personas_view.phtml");
8 ?>
9
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.
# view/personas_view.phtml
1
2 <!DOCTYPE html>
3 <html lang="es">
4 <head>
<meta charset="UTF-8" />
5 <title>Personas</title>
6 </head>
7 <body>
8 <?php
9 foreach ($datos as $dato) {
echo $dato["nombre"]."<br/>";
10 }
11 ?>
12 </body>
13 </html>
14
Los ficheros de la vista según el estándar de Zend Framework debemos usar
.phtml, pero se podría sin ningún problema usar la extensión .php
Muchos dicen que es recomendable usar CamelCase en los nombres de los
ficheros y las clases, a efectos prácticos da igual usarlo que no, incluso algunos
frameworks como Codeigniter nos sugieren que usemos nombres como
“wellcome_model” por eso no he utilizado CamelCase. Si puedes y quieres abusa
del CamelCase, porque así lo dicen los estándares.
Esquema del ejemplo: