new sans parenthèses

PHP 🟢 Junior

Définition

Depuis PHP 8.4, on peut chaîner un appel directement sur une instanciation : new Foo()->bar() sans envelopper new Foo() dans des parenthèses. La RFC a été adoptée 25 voix contre 4. La condition : écrire les parenthèses du constructeur ; (new Foo)->bar reste nécessaire sinon.

Analogie

Ouvrir une boîte et prendre l'objet dedans dans le même geste, au lieu de la poser d'abord sur la table.

Exemple de code

// PHP 8.4
$req = new Request()->withMethod('GET')->withUri('/hello');

// Avant : parenthèses obligatoires
$req = (new Request())->withMethod('GET');

// Toujours interdit sans () du constructeur :
// new Request->withMethod('GET');

Cas d'usage

Alléger les builders et objets fluents (requêtes HTTP, configurateurs) instanciés puis configurés d'un trait.

Anti-pattern

Omettre les parenthèses du constructeur : new Foo->bar() reste une erreur de syntaxe.
#core#php84

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre