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)