coge la información y corre

Formas de ejecutar funciones en PHP

11 de Noviembre del 2007 Escrito por Alex Barros

Aúnque a algunos les parezca extraño, existen tres formas distintas de ejecutar una función en PHP (por lo menos que yo conozca). Cada una puede venir bien en situaciones distintas.

Lo primero de todo, crearemos un par de funciones.

  1. function menor($a,$b){ return $a<$b ? $a : $b; }
  2. function mayor($a,$b){ return $a>$b ? $a : $b; }

La función menor() devuelve el menor de los dos números pasados como parámetros. La función mayor() hará lo contrario.

La forma clásica

La forma más típica de ejecutar una función, es símplemente escribiendo su nombre, seguido de unos paréntesis, con los parámetros separados por comas. De esta forma, al escribir:

  1. $a = 12;
  2. $b = 5;
  3.  
  4. echo "Entre $a y $b, el menor es ",menor($a,$b);

Nos devolvería el siguiente texto:

Entre 12 y 5, el menor es 5

Con la función call_user_func(_array)

Las función call_user_func nos permite ejecutar una función, dado el nombre en cadena alfanumérica.

La diferencia con call_user_fucn_array, es que en esta última los parámetros son pasados en un array.

  1. if($_GET[‘comparacion’] == ‘menor’) $func = ‘menor’;
  2. else $func = ‘mayor’;
  3.  
  4. $a = 17;
  5. $b = 32;
  6.  
  7. echo call_user_func($func,$a,$b);

Dependiendo de la variable GET comparación, se ejecutará una función u otra. La alternativa con call_user_func_array es:

  1. if($_GET[‘comparacion’] == ‘menor’) $func = ‘menor’;
  2. else $func = ‘mayor’;
  3.  
  4. $a = 17;
  5. $b = 32;
  6.  
  7. echo call_user_func_array($func,array($a,$b)); //parametros en forma de array

Directamente de una cadena

Esta es una forma sorprendente de ejecutar funciones. Parte de lo mismo que la anterior, el nombre de la función en una variable alfanumérica. Pero en este caso puede ser tratada directamente como función, así por la cara.

  1. $funcion = ‘menor’;
  2. echo $funcion(2,5); //Devuelve 2
  3. echo $funcion(8,-12); //Devuelve -12

Esta libertad recuerda a JavaScript, donde pueden igualarse variables a funciones de forma muy sencilla.

Conocéis alguna forma más? Os parece útil disponer de diferentes métodos para llamar a funciones?

Categorias: Comparativa, Curioso, Código, HOWTO/CóMO, PHP |

Sigue una dieta equilibrada, y escribe un comentario al día. (Dr. Manuel Torreiglesias)

Hay 2 comentarios, pero nos falta el tuyo

Xbalanqué Ha dicho:

Excelente aporte, me ha sido de muchísima utilidad.

programdor_fox Ha dicho:

Me parece excelente esta función, yo vengo de Visual Fox y necesitaba algo como esto para algo que estoy haciendo en php.

del.icio.us meneame.net RSS

Buscar:

Gpsia Descubre y comparte rutas por todo el mundo, tomadas con GPS. Ver más Imaset Edita tus imágenes de Wordpress con este sencillo plugin. Ver más

¡Mi música es tuya!

Digo yo que...

Mis fotos de Flickr

Entradas Recientes

Meta:

Respeta el copyleft

,