Cannot use(…) variables in constant expression
Description
It is possible to have closures in a constant, since PHP 8.5. Such closure must be static, so that it does not include the current object with $this. It also cannot use the use clause, as the definition of the closure is outside an execution context: there are no available variables to import in the closure.
Example
<?php
class X {
const MY = static function () use ($a) { return 1;};
}
?>
Alternatives
- Remove the
useclause of the closure. - Move the closure inside a method.
Related error messages
Changed Behavior
This error may appear following an evolution in behavior, in previous versions. See