Foros del Web » Programando para Internet » PHP »

Convertir array en parametros de metodo

Estas en el tema de Convertir array en parametros de metodo en el foro de PHP en Foros del Web. Hola. Tengo esta inquietud. Quisiera saber si hay alguna manera de hacer esto: Código PHP: class  X {     public function  Y ( $p1 ,  $p2 ,  ...
  #1 (permalink)  
Antiguo 19/03/2013, 00:25
 
Fecha de Ingreso: agosto-2011
Ubicación: Argentina
Mensajes: 31
Antigüedad: 12 años, 8 meses
Puntos: 1
Convertir array en parametros de metodo

Hola. Tengo esta inquietud. Quisiera saber si hay alguna manera de hacer esto:
Código PHP:
class X{
    public function 
Y($p1$p2$p3$p4){
        
//...
    
}
}

$x = new X();
$a = array("parametro1"2true"parametro4");
$x->Y($a);          //<-------------------------acá lo que quiero hacer 
Es decir yo no quiero pasar un array como un solo parámetro, sino que quiero que los elementos del array se conviertan en los parámetros.
Obviamente el código que puse es invalido, pero solo es para que se entienda la idea. Me pregunto si hay otra forma de invocar al método que permita pasar los parámetros en un array.
Saludos.
  #2 (permalink)  
Antiguo 19/03/2013, 03:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Convertir array en parametros de metodo

Código PHP:
Ver original
  1. $x->Y($a[0],$a[1],$a[2],$a[3]);

esto?

Si vas a obtener esos parametros siempre en un array quizas es mejor que modifiques la función

Código PHP:
Ver original
  1. class X{
  2. public function Y($a){
  3. $p1=$a[0];
  4. $p2=$a[1];
  5. $p3=$a[2];
  6. $p4=$a[3];
  7. //...
  8. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 19/03/2013, 03:56
 
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

No no es eso lo que quiero. Si bien se puede hacer de varias maneras yo quiero saber si hay alguna funcion en php que me permita pasar los parámetros de una funcion en un array pero que la funcion reciba cada elemento del array como un parámetro distinto. Esa es mi duda. Saludos.
  #4 (permalink)  
Antiguo 19/03/2013, 05:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Convertir array en parametros de metodo

Si recibe un array recibe un array luego tienes que leer ese array... si el array tiene indices tipo

$a = array(parametro1=>valorparametro1, parametro2=>2, parametro3=>true, parametro4=>valorparametro4);

luego podrás acceder por esos indices si no por el numerador...


Código PHP:
Ver original
  1. class X{
  2. public function Y($a){
  3. $p1=$a[0];
  4. $p2=$a[1];
  5. $p3=$a[2];
  6. $p4=$a[3];
  7. //...aca no hacen falta las p podrias trabajar directamente con los nodos del array
  8. }
  9.  
  10. $x = new X();
  11. $a = array("parametro1", 2, true, "parametro4");
  12. $x->Y($a);          //<-------------------------acá lo tienes hecho
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 19/03/2013, 08:47
 
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

Etiquetas: metodo, parametros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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