Closure sur le constructeur
<?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 a introduit les callables de première classe, une syntaxe pour créer une closure en utilisant l’opérateur ellipse ... comme argument. Cela fonctionne sur toutes sortes d’appels : méthodes, closures, fonctions.
Le seul appel où cela ne fonctionne pas est l’instanciation : PHP génère une erreur avec cette syntaxe.
En revanche, il est possible de créer une closure sur la méthode constructeur, comme pour n’importe quelle autre méthode. Et là, elle appelle à nouveau le constructeur sur l’objet déjà créé.
See Also
- Appel du constructeur [Try me]
PHP Error Messages
PHP Features
Last updated: 11 October 2026