Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Por aprender más que nada... ¿se puede asignar una función a una variable?

Estas en el tema de Por aprender más que nada... ¿se puede asignar una función a una variable? en el foro de PHP en Foros del Web. Hola amig@s, Tengo la siguiente duda: Necesitaría asignar a una variable ( $fecha ) una función ( fecha() ), puesto que lo que necesito es ...
  #1 (permalink)  
Antiguo 07/02/2012, 09:23
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Por aprender más que nada... ¿se puede asignar una función a una variable?

Hola amig@s,

Tengo la siguiente duda:

Necesitaría asignar a una variable ( $fecha ) una función ( fecha() ), puesto que lo que necesito es imprimir la fecha completa en español en varios sitios y por alguna razón, no me acepta colocar directamente la función, me da el error
Código PHP:
Cannot redeclare fecha() (previously declared in bla bla bla
La pregunta es ¿se puede hacer directamente o hay que hacer algún paso intermedio?

Gracias anticipadas por la ayuda.
  #2 (permalink)  
Antiguo 07/02/2012, 09:36
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

El error te dice que ya declaraste una función con el nombre fecha.

si mostraras el error completo ya te habría dicho donde xD!

saludos.
__________________
Utilice el Highlight para mostrar código, mis ojos se lo agradecerán :)
qué es esto? :O -> http://i48.tinypic.com/5x3kzs.png
Ya sabes :)
  #3 (permalink)  
Antiguo 07/02/2012, 14:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Hola Ribon,

Muchas gracias por responder.

Ya se que el error dice eso y se dónde la he declarado, pero el tema es que luego no la estoy declarando sino invocando, es decir, cuando me da el error es al poner esto:

Código PHP:
$fecha fecha(); 
Previamente, he incluido el archivo que contiene las funciones, que es donde está definida la función fecha(), el tema es que, como necesito que la fecha sea en formato "Dia de la semana, xx de mes de año" (en español, claro), no lo puedo hacer directamente con la función date() que sería lo más sencillo y eso es lo que me tiene loco.

Si me puedes echar una mano sobre esto, te lo agradeceré, porque estoy más que perdido, la verdad...
  #4 (permalink)  
Antiguo 07/02/2012, 14:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Con esa línea no te debería de marcar error, ya que efectivamente esta invocando la función, no declarandola.

El error te lo pone cuando encuentra dos: "function fecha()" o cuando el include lo tienes dentro de un loop.

¿Como es que lo estas haciendo?
  #5 (permalink)  
Antiguo 08/02/2012, 02:20
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Hola GatorV,

Gracias por responder.

Ya lo he resuelto, estaba incluyendo dos veces el archivo de encabezado que también declaraba la función. Al final he colocado la función directamente donde quería poner la variable.

Pero el tema es que me sigue quedando la duda de si se puede hacer lo que decía:

Código PHP:
$variable funcion(); 
Que al fin y al cabo, es lo que pretendía aprender ¿tú sabes si se puede hacer eso?

Gracias de antemano.
  #6 (permalink)  
Antiguo 08/02/2012, 02:32
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Me interesó mucho tu post, ya que es algo parecido lo que se hace con javascript y no sabía si se podía hacer lo mismo con php, y según dice su manual, se puede, así:

Cita:
Funciones de Variable: Php soporta el concepto de "Funciones de variable". Esto significa que si un nombre de variable tiene un paréntesis añadido, PHP buscará una función con el mismo nombre a lo que sea que la variable evalue, e intentará ejecutarla
Ejemplo:

Código PHP:
Ver original
  1. function funcionUno ($arg = '') {
  2.  echo 'El argumento pasado es igual a: ',$arg,'\n';
  3. }
  4.  
  5. $func = 'funcionUno';
  6. $func('prueba');  //Esto llama funcionUno() y le pasa el valor la palabra "prueba"

Espero te sirva de algo, lo cual veo muy interesante ya que se puede utilizar para muchas cosas incluyendo callbacks, que es lo que estoy aprendiendo a utilizar..

Exitos

Fuente: Funciones de Variables- Manual
  #7 (permalink)  
Antiguo 08/02/2012, 02:50
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Hola Raziel_Ravenheart,

Gracias por responder.

Entonces, según entiendo por lo que explicas, para asignar una función a una variable, simplemente se escribe la variable pero asignándole la función sin los paréntesis y luego se llama a la variable con los paréntesis, algo así:

Código PHP:
$fecha 'fecha';
$fecha(); 
en vez de como yo pretendía

Código PHP:
$fecha fecha(); 
Si me equivoco, me corriges, pero por lo que entiendo, hemos (has) dado con la respuesta que buscaba...


Última edición por rbczgz; 08/02/2012 a las 02:53 Razón: No lo había entendido bien
  #8 (permalink)  
Antiguo 08/02/2012, 08:17
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Exacto, pero acuerdate que lo que invoca la función es lo que evalua la variable no el nombre de esta, te recomiendo desde el principio. que el nombre de la variable sea diferente al nombre de la función, por que eso puede llevarte a tener confusiones, lo mejor que puedes hacer, es untilizar un nombre de variable genérico, es decir, si la función se llama fecha, u obtenerFecha, o cualquier otra cosa, siempre pon nombre de variables como: $funFechas, $funDatos, $funTexto, algo así

Código PHP:
Ver original
  1. function fecha () {
  2.  $fecAct = create_date();
  3.  $sFecAct = date_format( $fecAct, 'Y-m-d' );
  4.  echo 'La fecha actual es: ',$sFecAct;
  5. }
  6.  
  7. $funFecha = "fecha";
  8. $funFecha();

De este modo te darás cuenta que lo que está invocando la función, en sí no es la variable, si no el contenido de esta

Exitos!!!!!
  #9 (permalink)  
Antiguo 08/02/2012, 10:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

También a partir de PHP 5.3 tienes los Closures:
Código PHP:
Ver original
  1. $foo = function() {
  2.       return "bar";
  3. };
  4. echo $foo(); // bar

Pero lo que dices de usar:
$var = fecha();

Eso lo que hace es evaluar fecha() (o sea ejecutar fecha()) y el resultado de fecha lo asigna a $var.

Saludos.
  #10 (permalink)  
Antiguo 08/02/2012, 10:28
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Muchas gracias a todos, me ha quedado perfectamente claro, por lo que la respuesta final es sí, se puede asignar una función a una variable, que obviamente tomará el resultado de la función.

Una vez explicado así con tanto detalle está clarísimo.
  #11 (permalink)  
Antiguo 08/02/2012, 10:47
 
Fecha de Ingreso: enero-2012
Ubicación: Panamá
Mensajes: 1
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Por aprender más que nada... ¿se puede asignar una función a una variable?

Sí, puedes asignarle fecha() a una variable llamado $fecha. Lo que haces ahí realmente es que el valor que retorna fecha() ahora lo tendrá $fecha.

Etiquetas: nada, variables
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 22:06.