Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

PHP Error Messages

PHP Features

Last updated: 11 October 2026