Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2013, 04:01
DoHITB
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Llamar funciones desde array

Buenas!

A ver si me podéis ayudar a acortar código en esto...

Tengo un include que son funciones para un proyecto PHP, con una estructura similar a esta:

Código PHP:
Ver original
  1. <?php
  2. if($_GET['f'] === 'nombre_1')
  3.   echo(nombre_1());
  4. elseif($_GET['f'] === 'nombre_2')
  5.   echo(nombre_2());
  6. elseif...
  7. else
  8.   echo ''//404 / error
  9.  
  10. function nombre_1(){
  11.  
  12. }
  13.  
  14. function nombre_2(){
  15.  
  16. }
  17. ...
  18. ?>

Antes de acabar el proyecto y colgarlo (lo tengo en local) tengo pensado introducir los parámetros $_GET que recibe este include en una tabla de una base de datos, para después comprobar mediante una consulta si es un parámetro "adecuado", y si lo es ejecutar la función... es decir, algo así como:

Código PHP:
Ver original
  1. if(!in_array($_GET['f'], $params))
  2.  //error
  3.  
  4. //llamar a la función

Pero me gustaría saber si podría, por ejemplo, (supongo que si) hacer un array asociativo, para evitar todo el bloque "if", y hacer simplemente:

Código PHP:
Ver original
  1. $params = tomaParametros(); //recoge los parámetros válidos de la base de datos
  2.  
  3. if(!in_array($_GET['f'], $params))
  4.   echo(''); //error
  5.  
  6. echo($params[$_GET['f']]);

Teniendo en centa que previamente el $_GET está escapado (sin caracteres "raros", para evitar inyección).

¿Es posible hacer algo así? Me pareció ver que se puede usar "eval()" en PHP, pero no estoy seguro...

Gracias!