Closure em PHP
Uma closure em PHP é uma função anônima que pode capturar variáveis do seu escopo circundante. Isso permite que a função acesse essas variáveis mesmo depois que o escopo externo tenha terminado. As closures são úteis para criar funções dinâmicas e encapsular comportamentos.
Exemplo Básico
<?php
$mensagem = "Olá, mundo!";
$minhaClosure = function() use ($mensagem) {
    echo $mensagem;
};
$minhaClosure(); // Saída: Olá, mundo!
?>
No exemplo acima:
- A variável $mensagemé capturada pela closure através da cláusulause.
- A closure é chamada mais tarde e ainda pode acessar $mensagem.
Usando Closure Dentro de uma Função
<?php
function criarSaudacao($nome) {
    $mensagem = "Olá, $nome!";
    // Definindo uma closure dentro da função
    $saudacao = function() use ($mensagem) {
        echo $mensagem;
    };
    // Retornando a closure
    return $saudacao;
}
$saudacaoParaJoao = criarSaudacao("João");
$saudacaoParaJoao(); // Saída: Olá, João!
?>
Neste exemplo, a closure é criada dentro da função criarSaudacao e captura a variável $mensagem do seu escopo.
Passando Variáveis por Referência
Por padrão, as variáveis são passadas por valor para a closure. Para passá-las por referência, use o operador &:
<?php
$contador = 10;
$minhaClosure = function() use (&$contador) {
    $contador++;
};
$minhaClosure();
echo $contador; // Saída: 11
?>
Aqui, a variável $contador é passada por referência, permitindo que a closure modifique seu valor original.
As closures em PHP são uma ferramenta poderosa para encapsular lógica e criar funções dinâmicas, mantendo o acesso a variáveis do escopo onde foram definidas.
 

 
    
Top comments (0)