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)