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)