Bienvenidos sean a este post, hoy veremos la clase para controlarlos a todos.
Hasta el post anterior hemos establecido la base de nuestro MVC pero como vimos en ese post si abrimos nuestro proyecto nos devolvera la vista del error 404 porque no existe nada, nuestro primero paso sera crear un nuevo archivo llamado default.php dentro del directorio Views en el directorio app, y le agregaremos un simple mensaje:
default.php
Hola desde la vista predeterminada
Esta sera la vista predeterminada que usaremos cuando vayamos al inicio pero por el momento no funcionara, nuestro siguiente paso sera crear un archivo llamado ControladorBase.php en el directorio system, una vez generado le agregaremos estas lineas:
ControladorBase.php
<?php
namespace System;
use System\View;
En este caso primero establecemos el namespace, luego importamos a la clase View, lo siguiente sera definir nuestra clase para ello agregaremos el siguiente bloque:
class ControladorBase
{
}
Lo primero que haremos en esta clase sera agregar estas dos variables:
public $view;
public $url;
La primera sera usada para almacenar una vista y la segunda el url pero ya veremos para que, ahora agreguemos el siguiente metodo:
public function __construct()
{
$this->view = new View();
$this->url = $this->getUrl();
if (ENTORNO == 'desarrollo')
{
$whoops = new \Whoops\Run;
$whoops->pushHandler(
new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}
}
Este metodo sera un constructor para nuestra clase, en este caso uno predeterminado para cuando creamos un objeto de esta clase, lo primero que haremos es crear un nuevo objeto de la clase View y lo asignaremos a la variable view, despues en la variable url almacenaremos el resultado del metodo getUrl de la cual hablaremos luego, por ultimo tenemos un condicional donde verifica si la constante ENTORNO es igual a desarrollo, de lo cual hablamos en este post, en caso de ser verdadero procede a crear un nuevo objeto de la dependencia Whoops, una vez creado el objeto usaremos dos metodos de esta clase/dependencia que nos permitiran menejar de mejor forma de los errores, nuestro ultimo paso sera agregar el siguiente metodo:
protected function getUrl()
{
$url = isset($_SERVER['REQUEST_URI']) ?
rtrim($_SERVER['REQUEST_URI'],'/') :
NULL;
$url = filter_var($url, FILTER_SANITIZE_URL);
return $this->url = $url;
}
Aqui tenemos el metodo que utilizaremos para obtener la url y lo asignaremos a la variable url, para ello primero chequearemos si existe una url informada, en caso de ser cierto limpiamos todos los espacios en blanco de este, en caso de no ser asi asigna el valor NULL, luego a este valor le aplicaremos la funcion filter_var que nos permite filtrar una variable con el filtro que le pasemos, en este caso eliminara todos los signos a excepcion de letras y digitos, una vez realizado lo devolvemos y asignamos a la variable de la clase llamada url, veamos como quedo su codigo final por el momento:
ControladorBase.php
<?php
namespace System;
use System\View;
class ControladorBase
{
public $view;
public $url;
public function __construct()
{
$this->view = new View();
$this->url = $this->getUrl();
if (ENTORNO == 'desarrollo')
{
$whoops = new \Whoops\Run;
$whoops->pushHandler(
new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}
}
protected function getUrl()
{
$url = isset($_SERVER['REQUEST_URI']) ?
rtrim($_SERVER['REQUEST_URI'],'/') :
NULL;
$url = filter_var($url, FILTER_SANITIZE_URL);
return $this->url = $url;
}
}
Si recordamos cuando creamos el archivo de configuraciones, Config.php en este post, establecimos varios valores predeterminados entre ellos uno para la pagina de inicio y otro para el metodo, por lo tanto ahora crearemos dichos elementos, primero debemos ir al directorio Controllers en el directorio app y dentro de este crearemos un nuevo archivo llamado Inicio.php al cual le agregaremos el siguiente codigo:
inicio.php
<?php
namespace App\Controllers;
use System\ControladorBase;
class Inicio extends ControladorBase
{
public function index()
{
return $this->view->render('default');
}
public function tinchicus()
{
return $this->view->render('tinchicus');
}
}
Como en todos los casos anteriores primero establecemos el namespace y luego importamos a la clase que creamos anteriormente, despues definimos a la clase Inicio y que sera heredera de ControladorBase, dentro de esta clase tenemos dos metodos, el primero sera para el metodo predeterminado (index) la cual simplemente «dibujara» por medio del metodo render de la clase View a la pagina que creamos al principio de este post, luego tenemos otros metodo que dibujara otra pagina en particular pero de eso hablaremos luego, si lo probamos veremos lo siguiente:

Ya tenemos una pagina mas completa, ahora vamos a probar como funciona el Whoops, para ello iremos a la pagina default.php y modificaremos el codigo de la siguiente manera:
default.php
Hola desde la vista predeterminada
<?php ohno!
Si refrescamos la pagina veremos lo siguiente:

Observen como ahora tendremos todo un detalle de nuestro error para poder verificar de una forma mas rapida cual es nuestro inconveniente, recuerden que esto se puede desactivar simplemente modificando el valor de ENTORNO de desarrollo a produccion, para corregirlo simplemente eliminen la ultima linea que agregamos y deberia volver a la normalidad, por ultimo vamos a crear un nuevo archivo que llamaremos tinchicus.php en el directorio Views de app, agreguemos la siguiente linea:
tinchicus.php
Gracias por visitar Tinchicus.com!
Una vez creado este nuevo archivo podemos pasar a probar esta nueva vista, view o pagina, para ver como es su resultado, para ello debemos usar la siguiente URL:
http://localhost:8000/inicio/tinchicus
En este caso usamos a la clase Inicio y le decimos que llame al metodo tinchicus, la cual carga a la pagina o vista tinchicus.php, veamos la nueva pagina

Con esto ya tenemos una forma muy avanzada de manipulacion de nuestras paginas por medio de MVC pero esto es solo el comienzo pronto avanzaremos mucho mas.
En resumen, hoy hemos visto como trabaja la clase controladora de base, esta se encarga de tener los metodos predeterminados para poder manejar las vistas de nuestro proyecto, hemos visto como trabaja Whoops y como podemos ver a la pagina predeterminada sino otra personalizada, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
