Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2009, 11:56
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años, 4 meses
Puntos: 43
FrontController

buenas, me han pasado una aplicación para que realice varios cambios la misma usa MVC, y esta estructurada de esta manera:
core/
FrontController.php
controladores/
.....itemsControlador.php
modelos/
.....itemsModelo.php
vistas/
.....listar.php
index.php

el FrontController.php es asi:
Código php:
Ver original
  1. < ?php
  2. class FrontController
  3. {
  4.     static function main()
  5.     {
  6.         //Incluimos algunas clases:
  7.  
  8.         require 'libs/Config.php'; //de configuracion
  9.         require 'libs/SPDO.php'; //PDO con singleton
  10.         require 'libs/View.php'; //Mini motor de plantillas
  11.  
  12.         require 'config.php'; //Archivo con configuraciones.
  13.  
  14.         //Con el objetivo de no repetir nombre de clases, nuestros controladores
  15.         //terminaran todos en Controller. Por ej, la clase controladora Items, será ItemsController
  16.  
  17.         //Formamos el nombre del Controlador o en su defecto, tomamos que es el IndexController
  18.         if(! empty($_GET['controlador']))
  19.               $controllerName = $_GET['controlador'] . 'Controller';
  20.         else
  21.               $controllerName = "IndexController";
  22.  
  23.         //Lo mismo sucede con las acciones, si no hay accion, tomamos index como accion
  24.         if(! empty($_GET['accion']))
  25.               $actionName = $_GET['accion'];
  26.         else
  27.               $actionName = "index";
  28.  
  29.         $controllerPath = $config->get('controllersFolder') . $controllerName . '.php';
  30.  
  31.         //Incluimos el fichero que contiene nuestra clase controladora solicitada
  32.         if(is_file($controllerPath))
  33.               require $controllerPath;
  34.         else
  35.               die('El controlador no existe - 404 not found');
  36.  
  37.         //Si no existe la clase que buscamos y su acción, tiramos un error 404
  38.         if (is_callable(array($controllerName, $actionName)) == false)
  39.         {
  40.             trigger_error ($controllerName . '->' . $actionName . '` no existe', E_USER_NOTICE);
  41.             return false;
  42.         }
  43.         //Si todo esta bien, creamos una instancia del controlador y llamamos a la accion
  44.         $controller = new $controllerName();
  45.         $controller->$actionName();
  46.     }
  47. }
  48. ?>

y el index.php es:
Código php:
Ver original
  1. < ?php
  2. //Incluimos el FrontController
  3. require 'libs/FrontController.php';
  4. //Lo iniciamos con su método estático main.
  5. FrontController::main();
  6. ?

La cuestión es que me han pedido que separe el frontend y el backend para que no este todo en un mismo lugar, estuve viendo algunos FW (cake, codeigniter, etc) si tenían alguna separación de estructura así pero no vi.
Entonces mi duda es si yo separo la estructura asi:
core/
FrontController.php
website/controladores/
.....itemsControlador.php
website/modelos/
.....itemsModelo.php
website/vistas/
.....listar.php
index.php

admin/controladores/
.....itemsControlador.php
admin/modelos/
.....itemsModelo.php
admin/vistas/
.....listar.php
admin/index.php

1- el index.php del backend, tiene que ser igual al index del root.
2- para saber a que controller redireccionar si al backend o al frontend en el frontcontroller debería preguntar por ejemplo si la session del backend no esta vacia setear las rutas al backend sino al frontend.

Desde ya muchas gracias