Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/08/2010, 15:12
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 9 meses
Puntos: 101
seleccionar controladores y vistas en MVC

Que opinan de este FrontController? Lo que hace, basicamente, es elegir un controlador y una vista. Sin embargo aún me falta una buena parte del proyecto y ya siento que el FrontController se hace demasiado largo:

Código PHP:
class FrontController{    

    var 
$controller;
    var 
$dbObject;
    var 
$phpvars;
    var 
$contentsVars;
    
    function 
__construct(){
                
        include 
"controllers/BaseController.php"
        
$baseController = new BaseController(); 
        
$baseController->defineConstants();
        
        include 
"models/Model.php"
        
$this->dbObject = new dbConsults();
        
        
        
/* Translations for the UI */
        
$this->phpvars $baseController->varsConsult($this->dbObject); 
                
        
// utf-8 fixer
        
include (APP_LIB."fixEncoding.php"); 
        
        
$this->includeControllers();
        
        
/*** init View ****/
        
include "views/View.php";            
        
$whichView $this->chooseView(); //$whichView = $this->chooseView(); // template name    
        
$View = new View($whichView); // display view
        
$View->prepareContents($this->phpvars$this->contentsVars);
        
$View->render();
    }    
    
    private function 
chooseView(){
        
        if ( isset(
$_GET['login']) )        
            
$response TEMPLATES."login.tpl.php";
        
        elseif ( isset(
$_GET['register']) )        
            
$response TEMPLATES."registration.tpl.php";
        
        elseif ( isset(
$_GET['lostpassword']) )        
            
$response TEMPLATES."lostpassword.tpl.php";
            
        elseif(isset(
$download))            
            
$response TEMPLATES."contents.download.tpl.php";
        
        elseif(!isset(
$_SESSION['name']))        
            
$response TEMPLATES."contents.NoLogued.tpl.php";
        
        elseif(isset(
$_SESSION['name']))        
            
$response TEMPLATES."contents.Logued.tpl.php";    
            
        return 
$response;    
    }

    private function 
includeControllers()
    {
        
        if (isset(
$_GET['login']))
        {    
        
            include 
"controllers/LoginController.php"
            
$LoginController = new LoginController($this->dbObject);
            
$this->contentsVars['usersData'] = $LoginController->checkUser();                    
        }    
        elseif (isset(
$_GET['register']))
        {    
        
            include 
"controllers/RegistrationController.php"
            
$RegistrationController = new RegistrationController($this->dbObject);
            
$this->contentsVars['usersData'] = $RegistrationController->registerUser();    
        }
        elseif (isset(
$_GET['logout']))
        {    
        
            include 
"controllers/LoginController.php"
            
$LoginController = new LoginController($this->dbObject);
            
$LoginController->logout();
        }    
        elseif (isset(
$_GET['lostpassword']))
        {    
        
            include 
"controllers/RememberPassController.php"
            
$RememberPassController = new RememberPassController($this->dbObject);
            
$this->contentsVars['usersData'] = $RememberPassController->rememberPassword();
        }
        elseif (!isset(
$_GET['load']) and (FILENAME == "index"))
        {
            
            include 
"controllers/MainPageController.php"
            
$MainPageController = new MainPageController();
            
$this->contentsVars['tutorialsList'] = $MainPageController->listTutorials($this->phpvars$this->dbObject);                        
        }
        else{
        
            include 
"controllers/PageController.php"
            
$PageController = new PageController($this->dbObject);
            
$this->contentsVars['theContents'] = $PageController->printPageContents();    
        }
        
        include 
"controllers/MenusController.php"
        
$MenusController = new MenusController($this->dbObject);
        
$this->contentsVars['mainLinks'] = $MenusController->printMainMenu$this->phpvars );
        @
$this->contentsVars['relPages']  = $MenusController->printSecondaryMenu$contentsVars['theContents']['relatedPages'] );
        
        include 
"controllers/TagsController.php"
        
$TagsController = new TagsController($this->dbObject);
        
$this->contentsVars['theTags'] = $TagsController->tag_cloud();
    }    
    

Además, tengo ya muuchas plantillas y una sola vista. Así que creo que estoy equivocando los conceptos en algún punto.