PHP ¿Se puede pasar una función como parámetro de otra?

publicado por: Anonymous

Lo que quería hacer es indicarle a una función que función debería usar para realizar una tarea.

function principal ($parametro1, $parametro2, ..., $funcion)
{
  [...]
  $b = $funcion($variable);
  [...]
}

Así dependiendo de la función que le pase, conseguiría que la variable $b tuviera un valor u otro según las necesidades.

solución

Lo que intentas hacer se conoce como una funcion anonima.

Estas son funciones que no tienen un nombre especifico y como tal las puedes pasar como si fueran un argumento en una funcion.

He aqui un ejemplo:

<?php

/** 
  Creamos la funcion anonima, 
  que podra ser accedida 
  a traves de la variable $funcion
*/
$funcion = function($parametro){
    print "Parametro: $parametron";
};

/** 
   Creamos la funcion principal() 
   y en ella recibimos como parametros 
   un valor y una funcion anonima
*/
function principal($argumento, $funcion){

    print "Argumento: $argumenton";
    $funcion(10);

}

/** 
   Llamamos a las funcion principal() 
*/
principal(15, $funcion);


?>

Resultado

Argumento: 15
Parametro: 10

Ver en linea!

Actualizacion

A continuacion agrego un ejemplo, para que nos quede mas claro, esto acerca de las funciones anonimas:

<?php


$suma = function($a, $b){
    return $a + $b;
};

$resta = function($a, $b){
    return $a + $b;
};

function calcular($operacion, $a, $b){

   global $suma, $resta;

   $resultado = NULL;

    switch($operacion){

        case 'SUMA':
            $resultado = $suma($a, $b);

        case 'RESTA':
            $resultado = $resta($a,$b);

    }

   return $resultado;
}

$resultado = calcular('SUMA', 10, 15);

print "Resultado:" . $resultado . "n";

?>

Resultado

Resultado:25

Siempre puedes encontrar mas informacion en la documentacion de PHP.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *