Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

Implementación de Closures en PHP
Actualizado el 17 Octubre, 2016 y leído 2,926 veces
Calificación: 10.00 / 10

Implementación de Closures en PHP

Anexsoft

Este concepto viene usado hoy en día en la mayoría de los Frameworks modernos para PHP. Por ejemplo, Laravel lo implementa cuando trabajamos con rutas. Aca vamos a resaltar algo que puede generar confusión, en javascript "closure" hace referencia a un scope, es decir una área privada dentro de nuestro código. Es decir, mientras que para PHP se llama closure, en javascript se llama callbacks.

 

¿Qué es un Closure?

Es una función anónima que podemos declarar ya sea para guardarlo en una variable o como parámetro de entrada de una función.

 

Guardando una función anónima (closure) en una variable

Primero vamos a ver como guardar una función en una variable, funcionalidad que aplica en Javascript. Esto es un closure

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

echo $suma(4,10);

Quería que entiendan ese concepto, ya que lo vamos a recibir en nuestro closure son variables que contienen una función.

 

Ejemplo práctico

En este ejemplo vamos a crear 2 clases para autenticar a un usuario usando closure:

  1. User: contiene la información básica del usuario.
  2. UserLogic: es una clase que implementa la lógica de negocio. En nuestro caso la lógica para autenticar y recibe como parámetro un closure.
class User{
    public $id;
    public $Name;
    public $UserName;
}

class UserLogic
{
    public static function TryToLogin($user, $pass, $closure) {
        if($user === 'user' && $pass === '123456'){
            $user = new User();
            $user->id = 1;
            $user->Name = 'Eduardo Rodriguez';
            $user->UserName = 'erodriguez';
            
            $closure($user);
        } else {
            $closure(null);
        }
    }
}

UserLogic::TryToLogin

Si analizamos este método, lo que hacemos es validar en duro el usuario autenticar, si esta condición es verdadera retornamos la instancia de un nuevo usuario del caso contrario, simplemente null.

¿Cómo lo ponemos en práctica?

UserLogic::TryToLogin('user', '123456', function($res){
    var_dump($res);
});

Entonces nuestro closure, que es el 3er parámetro seteará la variable $res en caso de éxito instanciando al Usuario.

¡Adquiera ya!

  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC
  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter

Últimas publicaciones

Encuesta

¿Cómo nos conociste?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2017 Anexsoft, blog y cursos online de TI.