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

Aplicar métodos variables a objetos

Estas en el tema de Aplicar métodos variables a objetos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola... Tengo una pregunta y quería saber si alguien ya lo había hecho. Necesito poder aplicar a un objeto dado un método que paso por ...
  #1 (permalink)  
Antiguo 07/10/2005, 09:24
 
Fecha de Ingreso: octubre-2005
Mensajes: 2
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta Aplicar métodos variables a objetos

Hola...
Tengo una pregunta y quería saber si alguien ya lo había hecho.
Necesito poder aplicar a un objeto dado un método que paso por parámetro (string) con una cantidad dinámica de parámetros.
EJ:

$objeto->metodoDinamico(param1, param2...paramN);

metodoDinámico es un string que paso en un formulario, y los parámetros están en $_POST.
Por favor, si alguien me puede ayudar, se lo agradezco...
Muchas gracias.
  #2 (permalink)  
Antiguo 07/10/2005, 12:42
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
para los parametros variables usa:

func_num_args() devuelve el Numero de parametros pasados
func_get_args() devuelve un array con los parametros pasados a la funcion

cuando dices medotoDinamico es un string te refieres a algo asi:
Código PHP:
$metodo="ejemplo";
$objeto=new tuObjeto();

//llamar
$objeto->$metodo($var1,$var2,$var3); 
  #3 (permalink)  
Antiguo 07/10/2005, 12:56
 
Fecha de Ingreso: septiembre-2005
Mensajes: 30
Antigüedad: 18 años, 7 meses
Puntos: 0
Hola :

La cuestion principal no es como obtener los parametros pasados al metodo, sino como pasar un numero variable de parametros.

Ej:
$objeto->$metodo( var1, var2 )

Ahi esta pasando exactamente 2 parametros NO N parametros.

O ese, en la solucion que se propone se logra obtener cualquier cantidad de parametros a una llamada a un metodo "dinamico"; lo que aun no se ha logrado es como pasar ( no obtener ) una cantidad variable de parametros en una llamada.

Para eso se usa : call_user_method_array, call_user_method

Código PHP:
class Country {
    var 
$NAME;
    var 
$TLD;
    
    function 
Country($name$tld) {
        
$this->NAME $name;
        
$this->TLD $tld;
    }

    function 
print_info($prestr "") {
        echo 
$prestr "Country: " $this->NAME "\n";
        echo 
$prestr "Top Level Domain: " $this->TLD "\n";
    }
}

$cntry = new Country("Peru""pe");

echo 
"* Calling the object method directly\n";
$cntry->print_info();

echo 
"\n* Calling the same method indirectly\n";
call_user_method("print_info"$cntry"\t"); 
Saludos
__________________
Alojamiento Web - Alojamiento web y Servidores dedicados. Servidores en USA y Londres.
Hosting,PHP,Java,CSS,SEO BLOG - Web Hosting, Posicionamiento Web, Programacion en PHP, Java, CSS y mucho mas.
  #4 (permalink)  
Antiguo 07/10/2005, 13:34
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
Tienes toda la razon javier_enithost...
la unica opcion para "pasar" varios parametros dinamicamente es teniendolos en un array y usar:

call_user_func_array(funcion,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 01:04.