DEV Community

slns
slns

Posted on

Php Closure

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!
?>
Enter fullscreen mode Exit fullscreen mode

No exemplo acima:

  • A variável $mensagem é capturada pela closure através da cláusula use.
  • 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!
?>
Enter fullscreen mode Exit fullscreen mode

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
?>
Enter fullscreen mode Exit fullscreen mode

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)