Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Front Controller

Estas en el tema de Front Controller en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy llevando a cabo un mini FrontController, tengo 2 dudas: -1) ¿Como paso las variables de cada Método a la vista correspondiente? -2) ¿Como paso ...
  #1 (permalink)  
Antiguo 09/06/2019, 12:01
 
Fecha de Ingreso: enero-2008
Mensajes: 561
Antigüedad: 11 años, 5 meses
Puntos: 9
Front Controller

Estoy llevando a cabo un mini FrontController, tengo 2 dudas:
-1) ¿Como paso las variables de cada Método a la vista correspondiente?
-2) ¿Como paso los Argumentos? call_user_func([$cnt,$mtd],$args)
Gracias

portada_index.php
Código HTML:
<?php print_r($args) ?> 
index.php
Código PHP:
<?php

    
class Controller{
        function 
__construct(){require_once('theme_header.phtml');
            
$args = isset($_GET['url']) ? explode('/',$_GET['url']) : ['portada'];
            
method_exists($cnt=array_shift($args),$mtd=empty($args)?'index':array_shift($args)) ? (new $cnt())->{$mtd}() : (new errors())->method();
        }
        function 
__destruct(){require_once('theme_footer.phtml');}
    }

    function 
view($cnt,$mtd){file_exists($file=$cnt.'_'.$mtd.'.phtml') ? require_once($file) : (new errors())->view();}

    class 
portada{
        function 
index(){view(__CLASS__,__FUNCTION__);}
    }

    class 
usuarios{
        function 
index(){view(__CLASS__,__FUNCTION__);}
    }

    class 
errors{
        function 
method(){echo __METHOD__;}
        function 
view(){echo __METHOD__;}
    }

    new 
Controller();
He intentado añadir (call_user_func_array) para recibir los paremetros de la URL en las vistas, pero no funciona
Código PHP:
    class Controller{
        function 
__construct(){require_once('theme_header.phtml');
            
$args = isset($_GET['url']) ? explode('/',$_GET['url']) : ['portada'];
            
method_exists($cnt=array_shift($args),$mtd=empty($args)?'index':array_shift($args)) ? (new $cnt())->{$mtd}() : (new errors())->method();
            
$datos call_user_func_array([$cnt,$mtd],$args);
        }
        function 
__destruct(){require_once('theme_footer.phtml');}
    } 

Última edición por quico5; 09/06/2019 a las 12:38



La zona horaria es GMT -6. Ahora son las 22:19.