Foros del Web » Programando para Internet » PHP »

Pasar argumento por referencia en función con número de argumentos variable

Estas en el tema de Pasar argumento por referencia en función con número de argumentos variable en el foro de PHP en Foros del Web. Buenas, Estoy haciendo una función que recibe de una a tres variables. Hasta aquí todo bien, porque puedo controlar el número de variables introducidas y ...
  #1 (permalink)  
Antiguo 07/02/2006, 15:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 15 años, 1 mes
Puntos: 17
Pasar argumento por referencia en función con número de argumentos variable

Buenas,

Estoy haciendo una función que recibe de una a tres variables.

Hasta aquí todo bien, porque puedo controlar el número de variables introducidas y sus valores con func_num_args() y func_get_args().

El problema es que el tercer argumento, de existir, debe pasarse por referencia.

Por lo que he leído no hay forma de hacer esto, estoy equivocado?

Un saludo.
  #2 (permalink)  
Antiguo 07/02/2006, 19:59
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
No podrías pasarlo así, usando &?

Código PHP:
<?php
   $arg3
="algo";
   
mifuncion($arg1,$arg2,&$arg3);
?>
http://www.php.net/manual/es/languag...ences.pass.php
  #3 (permalink)  
Antiguo 08/02/2006, 01:28
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 15 años, 1 mes
Puntos: 17
Sí, pero en ese caso el número de argumentos es fijo, no?

Lo que yo quiero es que se pueda llamar a la función así:

nombre_funcion($arg1, $arg2, $arg3);

ó

nombre_funcion($arg1, $arg2);

ó

nombre_funcion($arg1);


entonces en la declaración de la función no puedo especificar el número de arguentos (creo, vamos), y si no puedo especificarlos, no puedo decirle que el tercero (de existir, que no habrá siempre) sea por referencia.

Saludos.
  #4 (permalink)  
Antiguo 08/02/2006, 07:07
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Lo que quiero decir con el codigo que te indiqué, es que cuando necesites enviar el tercer parámetro, por referencia, dado que asi lo pide la función, lo hagas usando &.
Si no lo haces, la función dará resultados erróneos.
Es decir, la documentación de la función puede decir:

"Esta función recibe de 1 a 3 parámetros, y el tercero, de usarse, debe pasar por referencia".

Dentro de la función lo tratas como tal (como si de una referencia se tratara), ahora, está claro que no puedes controlar que ese parámetro venga o no por referencia, a no ser que exista alguna función que verifique esto y que pueda usarse dentro de la función.
  #5 (permalink)  
Antiguo 08/02/2006, 10:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 15 años, 1 mes
Puntos: 17
Ahm, te refieres en la llamada a la función, no te entendí bien.

Mmmm, y eso se puede hacer? tenía entendido que en la llamada no se podía especificar si viene por referencia o no, eso sólo se podía hacer en la declaración de la función...

No obstante luego lo probaré a ver si funciona, postearé aquí el resultado de la prueba.



Un saludo y gracias.
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 16:42.