Funciones Anónimas - Closures PHP

Funciones Anónimas - Closures PHP

Las funciones anónimas son funciones especiales ya que no tienen nombres. PHP dice que también son conocidas como cierres (closures), y aunque redunde hay que decir que permiten la creación de funciones que no tienen un nombre especificado. Esto, para que se entienda bien, podemos imaginar a una variable con necesidad de lógica. Como no tiene nombre, esta función anonima se le asigna a una variable.


Esto sería una función anonima o closures

<?php

    function($name){
        return "Hola, {$name}";
    };

Al ver esto nace una pregunta lógica. ¿Cómo llamamos a una función sin nombre?, y la respuesta es sencilla, una función sin nombre podemos asignarla a una variable, es un valor normal y verás que es muy sencillo.

<?php

    $greet = function($name){
        return "Hola, {$name}";
    };

    echo $greet('Italo Morales');

Puedes notar que la función anónima es el valor de una variable llamada $greet que significa saludar. La variable debe terminar con punto y coma, por eso ves al final el signo llaves junto al punto y coma };, simplemente porque esto forma parte de la sintaxis de asignación.

Nota ademas que para hacer uso de la variable, no debemos olvidar los paréntesis. Ejemplo $greet(), variable con paréntesis.

Ya ves, simplemente añadimos paréntesis a nuestra variable y el código es ejecutado con éxito.

Funciones como parámetros de funciones

Esto quiere decir, pasar pequeñas secciones o bloqués de código a funciones. No parámetro comunes, sino mas bien lógica.

Además decimos el tipo de parámetro usando la palabra Closure delante del parámetro función, esto es para asegurarnos de que unicamente es permitido pasar funciones anónimas y no variable común. Esto es un objeto en PHP.

<?php

    function greet(Closure $gender, $name) {
        return $gender($name);
    }

    $female = function ($name) {
        return "Hola señora, {$name}";
    };

    $male = function ($name) {
        return "Hola señor, {$name}";
    };

    echo greet($female, 'Luisa Fantone');
    echo '<br>';
    echo greet($male, 'Italo Morales');

Explicación:

  • Primero tenemos una función llamada greet(), pero en realidad no está saludando a nadie. Sin embargo su utilidad es recibir una función anónima y ahí está la magía... Porque desde ahí llamamos a la Closure y le pasamos el nombre para que salude a quien deseamos saludar.
  • Mas abajo tenemos dos funciones anónimas asignadas a las variables $female y $male. Ambas reciben el parámetro $name y tienen la lógica para saludar correctamente.
  • Por último tenemos el uso y llamado a la función greet().

Y con esto culminamos lo que para muchos es díficil de entender, las funciones anónimas o closure.

El código está en Github de Rimorsoft Regálanos estrellas y está pendiente de los otros post de PHP.

Adquiere en preventa y aprovecha un gran descuento Refactorización de Código con PHP - Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


crear un radio button que despliegue msj

hola quisiera saber como puedo crear un radio button que cuando lo seleccione me mande un msj de alerta.

mi codigo es el siguiente

---- en mi vista---- {!! Form::label('oobraexte', 'La Obra es:') !!} {!! Form::radio('oobraexte', 'SI', false, ['class'=>'check', 'id'=>'radio1']) !!} ...

recibir un checkbox en el controlador

como puedo recibir un checkbox en el controlador y si esta seleecionado que haga una accion, y si no esta seleccionado que haga otra?, un saludo y gracias...

Enviar arreglos en un input desde html (blade)

Hola a todos actualemente tengo este fragmento de codigo en html dónde envio informacion de un usuario

<!-- cuando es requerido y de tipo checkbox -->
<div class="form-group">
  <div class="col-md-6">
    <label for="{{$tag->tag_name}}" class="col-md-4 control-label">{{$tag->tag_name}}</label>
    <input type="hidden" class="form-control" value="{{$tag->id}}" n...

Como puedo conectarme a múltiples base de datos con laravel

Hola saludos como puedo conectarme a múltiples base de datos y hacer login con los usuarios de cada una de ellas y acceder a la informacion especifica de cual me encuentro iniciada la sesion

Necesito de sua ayuda y orientacíon sobre el tema muchas gracas....