0% encontró este documento útil (0 votos)
78 vistas

Sistema PHP-MVC Parte 2

Este documento describe las clases principales de una aplicación PHP MVC. La clase Site controla las peticiones del usuario y dirige el flujo a través del controlador, vista y modelo. La clase Controller establece la lógica común de los controladores y carga los modelos. La clase View maneja la generación y renderizado de las vistas utilizando plantillas. Juntas, estas clases fundamentan la arquitectura MVC de la aplicación.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
78 vistas

Sistema PHP-MVC Parte 2

Este documento describe las clases principales de una aplicación PHP MVC. La clase Site controla las peticiones del usuario y dirige el flujo a través del controlador, vista y modelo. La clase Controller establece la lógica común de los controladores y carga los modelos. La clase View maneja la generación y renderizado de las vistas utilizando plantillas. Juntas, estas clases fundamentan la arquitectura MVC de la aplicación.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Raz/protected/app/Site.

php
<?php
class Site {

/**
* Clase que configura las peticiones del usuario (a travs del objeto Request)
* Para comenzar el trabajo con el controlador, vista y modelo
*
* Instanciar una clase como un parmetro:
* (NombreClase $nombre_objeto) => $nombre_objeto = new NombreClase;
* O en otras palabras pasar por parmetro un objeto
*
* is_readable($rout) funcin php para verificar si existe la el archivo
*
* call_user_func_array mtodo que recibe un arreglo, que tiene por parametro:
* El nombre de la clase (Controller)
* El mtodo de esa clase (Method)
* Y los parmetros que queremos pasarle a los mtodos (Arguments)
*
* o si no existe argumentos, solo se le pasa por parmetros:
* El nombre de la clase (Controller)
* Y el mtodo de esa clase (Method)
*
*/
public static function run(Request $request) {

$controller = $request->getController() . "Controller";
$rout_controller = ROOT . 'protected' . DS . 'controllers' . DS . $controller . '.php';
$method = $request->getMethod();

$arguments = $request->getArguments();

if (is_readable($rout_controller)) {

require_once $rout_controller;

$controller = new $controller;

if (is_callable(array($controller, $method))) {
$metodo = $request->getMethod();
}else {
$metodo = 'index';
}

if (isset($arguments)) {

call_user_func_array(array($controller, $method), $arguments);

}else {
call_user_func($controller, $method);
}

}else{

throw new Exception('EL ARCHIVO: "'. $rout_controller . '" NO FUE ENCONTRADO');
}
}
}
?>










Raz/protected/app/Controller.php
<?php
abstract class Controller {
/**
* Clase Madre que ha de ser heredada por otras sub-clases de tipo Controller
*
* En esta clase se crea un atributo el cual se
* convertir en un objeto de tipo vista ($_view).
*
* Se crea un mtodo abstracto llamado index para que
* Siempre exista al momento de invocarlo.
*
* Se crea un mtodo donde se construye la ruta del modelo
* Si existe el archivo en la ruta construida, se incluye en el mismo
* y se crea un objeto de tipo model, es decir para la interaccin
* con la base de datos.
*
* En esta clase tambin se puede crear mtodos de validacin y
* mtodos para mostrar mensajes de especiales (error, alert, sussesfull, other)
* o algn tipo de funcin especial que se requiera.
*
*
*/
protected $_view;

public function __construct() {
$this->_view = new View(new Request);
}

abstract public function index();

protected function loadModel($model) {

$model = $model . 'Model';
$model_route = ROOT . 'protected' . DS . 'models' . DS . $model . '.php';

if (is_readable($model_route)) {

require_once $model_route;
$model = new $model;
return $model;

}else {

throw new Exception('EL ARCHIVO: "'. $model_route .'" NO ENCONTRADO.');

}
}

}
?>















Raz/protected/app/Views.php
<?php
class View {

/**
* Clase encargara de armar las vistas de la App
*
* recibe como parmetro un objeto de tipo Request para
* capturar las peticiones del usuario a travs de la URL
*
* Su mtodo principal en render($view, $method) el cual recibe como
* Parmetro el nombre de la vista a buscar
* Y el mtodo a ejecutar, el cual puede ser omitido.
*
* una vez encontrada la ruta de la vista, se comienza a armar la
* vista, invocando los archivos necesario (HTML), para ser presentada al usuario.
*
* $_view_params es un array para pasarle parmetros a la vista y
* As ejecutar ciertas instrucciones en la vista.
*
*/
private $_controller;

public function __construct(Request $request) {

$this->_controller = $request->getController();
}

public function render($view, $method = FALSE) {

/**
*
* Top Men
*
*/

$_view_params = array(

);

$view_route = ROOT.'protected'.DS.'views'.DS.$this->_controller.DS.$view.'.phtml';

if (is_readable($view_route)) {

include_once ROOT . 'protected' . DS . 'views' . DS . 'layout' . DS . 'statements.phtml';
include_once ROOT . 'protected' . DS . 'views' . DS . 'layout' . DS . 'header.phtml';
include_once ROOT . 'protected' . DS . 'views' . DS . 'layout' . DS . 'sidebar.phtml';
include_once $view_route;
include_once ROOT . 'protected' . DS . 'views' . DS . 'layout' . DS . 'footer.phtml';

}else{

throw new Exception('LA VISTA: "'. $view_route .'" NO FUE ENCONTRADA.');
}
}
}
?>

NOTA:

Una vez realizado estos archivos deben sustituir este cdigo:

try {
Site::run(new Request);
} catch (Exception $e) {
echo $e->getMessage();
}

Por el siguiente:

/**
* PEGAR EL CODIGO AQUI!!!
*/

En el archivo Raz/index.php donde dice:
Con este cdigo estaremos creando un objeto desde la el metodo estatico run() de la clase Site.

También podría gustarte