update page now

Closure::getCurrent

(PHP 8 >= 8.5.0)

Closure::getCurrentReturns the currently executing closure

Description

public static Closure::getCurrent(): Closure

Returns the currently executing closure. This method is primarily useful for implementing recursive closures without needing to capture a reference to the closure variable using the use keyword.

This method must be called from within a closure; calling it outside of a closure context will result in an error.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Returns the currently executing Closure instance.

Erreurs / Exceptions

Throws an Error if called outside of a closure context.

Exemples

Exemple #1 Closure::getCurrent() example

Using Closure::getCurrent() to implement a recursive Fibonacci function:

<?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); // Outputs: 55
?>

Exemple #2 Comparison with traditional approach

Prior to PHP 8.5, implementing recursive closures required capturing a reference to the closure variable using the use keyword:

<?php
// Traditional approach (still works in 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); // Outputs: 55
?>

The Closure::getCurrent() approach eliminates the need to declare the variable with a reference in the use clause, making the code cleaner and less error-prone.

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top