Foros del Web » Programando para Internet » PHP »

call_user_func y call_user_func_array

Estas en el tema de call_user_func y call_user_func_array en el foro de PHP en Foros del Web. he ojeado: http://www.php.net/manual/es/functio...-user-func.php http://www.php.net/manual/es/functio...func-array.php se me hace un poco raro de entender: Código PHP: if(!empty( $argumentos )) {      call_user_func_array (array( $controller ,  $metodo ),  $argumentos ...
  #1 (permalink)  
Antiguo 18/05/2014, 15:54
 
Fecha de Ingreso: enero-2008
Mensajes: 561
Antigüedad: 11 años, 5 meses
Puntos: 9
call_user_func y call_user_func_array

he ojeado:
http://www.php.net/manual/es/functio...-user-func.php
http://www.php.net/manual/es/functio...func-array.php

se me hace un poco raro de entender:
Código PHP:
if(!empty($argumentos)) {
    
call_user_func_array(array($controller$metodo), $argumentos);
} else {
    
call_user_func(array($controlador$metodo));

Parece que hacen lo mismo:
Código PHP:
call_user_func('metodo''atributo'); 
Código PHP:
metodo('atributo'); 
Parece que hacen lo mismo:
Código PHP:
call_user_func_aray('metodo', array('atributo1''atributo2')); 
Código PHP:
metodo(array('atributo1''atributo2')); 
Esto si que me desconcierta:
Código PHP:
$foo = new foo;
call_user_func_array(array($foo"bar"), array("tres""cuatro")); 

Última edición por quico5; 18/05/2014 a las 16:17
  #2 (permalink)  
Antiguo 18/05/2014, 17:51
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.427
Antigüedad: 7 años, 7 meses
Puntos: 929
Respuesta: call_user_func y call_user_func_array

Ambas funciones llaman a la función de usuario que se le pasa como primer parámetro, asignándole como argumentos al conjunto de parámetros a la derecha de este. La diferencia con el uso del array es que, en el primer caso, puedes pasarle todos los valores que contenga el array como argumentos, mientras que en la segunda, además de lo anterior, puedes invocar al método de una clase, en donde en dicho array, el primer valor es la clase y el segundo, el método.

Código PHP:
Ver original
  1. class miClase{
  2.     public function miMetodo($valor1, $valor2){
  3.         return $valor1 . ' por ' . $valor2 . ' es ' . ($valor1 * $valor2);
  4.     }
  5. }
  6.  
  7. $miClase = new miClase();
  8. echo call_user_func_array(array($miClase, 'miMetodo'), array(5, 4)); //Imprime '5 por 4 es 20'

Saludos
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #3 (permalink)  
Antiguo 11/06/2019, 18:41
 
Fecha de Ingreso: enero-2008
Mensajes: 561
Antigüedad: 11 años, 5 meses
Puntos: 9
Respuesta: call_user_func y call_user_func_array

He encontrado esta respuesta como borrador...

Gracias por responder alexis88

En este caso mande o no argumentos

Código PHP:
if (!empty($argumentos)) {
    
call_user_func_array(array($controller$metodo), $argumentos);
} else {
    
call_user_func(array($controlador$metodo));

  #4 (permalink)  
Antiguo 11/06/2019, 18:44
 
Fecha de Ingreso: abril-2006
Mensajes: 257
Antigüedad: 13 años, 1 mes
Puntos: 39
Respuesta: call_user_func y call_user_func_array

Cita:
Iniciado por quico5 Ver Mensaje
He encontrado esta respuesta como borrador...

Gracias por responder alexis88

En este caso mande o no argumentos

Código PHP:
if (!empty($argumentos)) {
    
call_user_func_array(array($controller$metodo), $argumentos);
} else {
    
call_user_func(array($controlador$metodo));

ese fragmento es erroneo dara error, ya que empty es igual para strings y demas
lo correcto es esto
Código PHP:
if (is_array($argumentos)) {
    
call_user_func_array(array($controller$metodo), $argumentos);
} else {
    
call_user_func(array($controlador$metodo));

__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #5 (permalink)  
Antiguo 11/06/2019, 18:47
 
Fecha de Ingreso: enero-2008
Mensajes: 561
Antigüedad: 11 años, 5 meses
Puntos: 9
Respuesta: call_user_func y call_user_func_array

Estaba biendo estos 2 ejemlos en el manual...

Estoy pensando, que se debe usar para pasar los parametros en un FrontController mientras se llama al metodo correspondiente...

Código PHP:
<?php

namespace Foobar
;

class 
Foo {
    static public function 
prueba($nombre) {
        print 
"¡Hola {$nombre}!\n";
    }
}

// A partir de PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::prueba', array('Gema'));

// A partir de PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo''prueba'), array('Pedro'));

?>
Código PHP:
<?php

$func 
= function($arg1$arg2) {
    return 
$arg1 $arg2;
};

var_dump(call_user_func_array($func, array(24))); /* A partir de PHP 5.3.0 */

?>
  #6 (permalink)  
Antiguo 11/06/2019, 18:49
 
Fecha de Ingreso: enero-2008
Mensajes: 561
Antigüedad: 11 años, 5 meses
Puntos: 9
Respuesta: call_user_func y call_user_func_array

Es verdad tuadmin, gracias por la observación

Cita:
Iniciado por tuadmin Ver Mensaje
ese fragmento es erroneo dara error, ya que empty es igual para strings y demas
lo correcto es esto
Código PHP:
if (is_array($argumentos)) {
    
call_user_func_array(array($controller$metodo), $argumentos);
} else {
    
call_user_func(array($controlador$metodo));




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