Closure On Constructor¶
<?php
class x {
public $p = 3;
function __construct() {
$this->p = 4;
}
}
//Cannot create Closure for new expression
//$c = new X(...);
$x = new x();
echo $x->p;
$x->p = 5;
echo $x->p;
$f = $x->__construct(...);
$f();
echo $x->p;
PHP 8.1 introduced first class callable, a syntax to build a closure by using the ellipsis operator ... as argument. This works on all sorts of calls, methods, closure, functions.
The only call where it doesn’t work is the instantiation: PHP generates an error from that syntax.
On the other hand, it is possible to create a closure on the constructor method, like any other method. And there, it just calls again the constructor, on the object that was already created.
See Also¶
Calling the constructor [Try me]
PHP Error Messages¶
PHP Features¶
Last updated: 13 August 2026