Closure::getCurrent

(PHP 8 >= 8.5.0)

Closure::getCurrentRetorna o closure em execução no momento

Descrição

public static Closure::getCurrent(): Closure

Retorna o closure em execução no momento. Este método é útil principalmente para implementar closures recursivos sem a necessidade de capturar uma referência à variável do closure com a palavra-chave use.

Este método precisa ser chamado de dentro de um closure; chamá-lo de fora de um contexto de closure resultará em um erro.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Retorna a instância do Closure em execução.

Erros/Exceções

Lança um Error se chamado de fora de um contexto de closure.

Exemplos

Exemplo #1 Exemplo de Closure::getCurrent()

Usando Closure::getCurrent() para implementar uma função de Fibonacci recursiva:

<?php
$fibonacci
= function (int $n) {
if (
0 === $n || 1 === $n) {
return
$n;
}

$fn = Closure::getCurrent();
return
$fn($n - 1) + $fn($n - 2);
};

echo
$fibonacci(10); // Exibe: 55
?>

Exemplo #2 Comparação com método tradicional

Antes do PHP 8.5, para implementar closures recursivos era necessário capturar uma referência à variável do closure usando a palavra-chave use:

<?php
// Método tradicional (ainda funciona no PHP 8.5)
$fibonacci = function (int $n) use (&$fibonacci) {
if (
$n === 0) return 0;
if (
$n === 1) return 1;
return
$fibonacci($n - 1) + $fibonacci($n - 2);
};

echo
$fibonacci(10); // Exibe: 55
?>

O método Closure::getCurrent() elimita a necessidade de declarar a variável com uma referência na cláusula use, tornando o código mais limpo e menos suscetível a erros.

adicionar nota

Notas de Usuários

Não há notas de usuários para esta página.
To Top