Foros del Web » Programando para Internet » PHP »

Duda con call_user_func_array pasando parametros

Estas en el tema de Duda con call_user_func_array pasando parametros en el foro de PHP en Foros del Web. Código PHP: <?php      class  Controller {         function  __construct (){              // url=c/m/1/2              ( $url = explode ( '/' , $_GET [ 'url' ]?? null ...
  #1 (permalink)  
Antiguo 12/06/2019, 04:32
 
Fecha de Ingreso: enero-2008
Mensajes: 565
Antigüedad: 11 años, 7 meses
Puntos: 9
Duda con call_user_func_array pasando parametros

Código PHP:
<?php

    
class Controller{
        function 
__construct(){
            
// url=c/m/1/2
            
($url=explode('/',$_GET['url']??null)) && $url=[array_shift($url)?:'index',array_shift($url)?:'index',$url];
            
            
// ¿Porque call_user_func_array solo me muestra el primer parametro?
            
call_user_func("Controller::b",$url); // Array ( [0] => c [1] => m [2] => Array ( [0] => 1 [1] => 2 ) ) 
            
call_user_func_array("Controller::b",[ $url[0],$url[1],$url[2] ]); // c
        
}

        function 
b($a){
            require
'demo.phtml';
        }
    }
    new 
Controller();


?>
//Así si me lo manda como array ¿?
Código PHP:
call_user_func_array("Controller::b",[ [$url[0],$url[1],$url[2]] ]); 
Algo lo voy entendiendo...

Última edición por quico5; 12/06/2019 a las 04:38
  #2 (permalink)  
Antiguo 12/06/2019, 05:34
 
Fecha de Ingreso: enero-2008
Mensajes: 565
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Duda con call_user_func_array pasando parametros

Creo que lo voy pillando
Código PHP:
<?php error_reporting(E_ALL);

    class 
Controller{
        function 
__construct(){
            (
$url=explode('/',$_GET['url']??null)) && $url=[array_shift($url)?:'index',array_shift($url)?:'index',$url];
            
method_exists($url[0],$url[1])?call_user_func_array([$url[0],$url[1]],[$url,$y='a']):print('n');
        }
    }
    new 
Controller();

    class 
c{
        static function 
m($url,$y){
            
file_exists($f=str_replace('::','_',__METHOD__).'.phtml')?require_once $f:print(' error ');
        }
    }

?>



La zona horaria es GMT -6. Ahora son las 20:51.