Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/03/2013, 08:47
lopezezequiel
 
Fecha de Ingreso: agosto-2011
Ubicación: Argentina
Mensajes: 31
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Convertir array en parametros de metodo

Hola quimfv, gracias por responder. Yo ya se que se puede hacer así como me lo mostras, pero simplemente quería saber si hay alguna funcion que permita pasar los parámetros dentro de un array pero que llegen al scope de la funcion como variables individuales.

Es decir tengo definida asi una funcion:
funcion A($p1, $p2, $p3){
echo $p1;
echo $p2;
echo $p3;
}

ademas tengo un array con parámetros:
$params = array("p1", 2, "p3");

entonces pensaba que tal vez existia alguna funcion asi
invocar_funcion(A, $params);

Osea, que no tendría que modificar la funcion A para recibir un array en vez de los parámetros separados.
----------------------------------------------------------------------------------

Hola. Acabo de encontrar lo que buscaba. Lo pongo por si a alguien le sirve:
Es esta funcion

mixed call_user_func_array ( callable $callback , array $param_arr )
[URL="http://php.net/manual/en/function.call-user-func-array.php"]http://php.net/manual/en/function.call-user-func-array.php[/URL]

Ejemplo:
Código PHP:
<?php
function foobar($arg$arg2) {
    echo 
__FUNCTION__" got $arg and $arg2\n";
}
class 
foo {
    function 
bar($arg$arg2) {
        echo 
__METHOD__" got $arg and $arg2\n";
    }
}


// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one""two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo"bar"), array("three""four"));
?>
Y un ejemplo con metodos
Código PHP:
$handler = array( 'MyClass''MyMethod');
$params = array(1,2,3,4);

if ( 
is_callable($handler) ) { call_user_func_array$handler $params ); } 
La unica mala noticia es que aunque se puede pasar una clase instanciada como parametro no se tiene acceso a las varibles del objeto, si a las de la clase, pero algo es algo...

Saludos.

Última edición por lopezezequiel; 19/03/2013 a las 10:02