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

New et les parenthèses

<?php

// pre-requisite
$a = 'a';
const ab = 'ab';
class ab {
  function __construct() { echo __METHOD__.PHP_EOL; }
}

// create classes
new ab;
new ab();
new (ab);
new ($a.'b');
new (ab::class);

// PHP 9, a wish!
//new ()ab; 

?>

Où PHP accepte-t-il les parenthèses dans un appel new ?

Premièrement, aucune parenthèse n’est nécessaire, tant que le constructeur n’a aucun paramètre.

Deuxièmement, les parenthèses sont également possibles après le nom de la classe.

Ensuite, les parenthèses peuvent entourer le nom de la classe, à condition qu’une constante contienne le nom de la classe. Point bonus si la classe et la constante portent le même nom.

Après cela, il y a un appel dynamique, où le nom complet de la classe est construit, puis utilisé.

Et le dernier est la version avec constante, utilisant l’opérateur explicite ::class.

Ce serait bien d’avoir une syntaxe où les parenthèses précèdent le nom de la classe : aucun autre langage ne fait ça ! Alors, pour PHP 9, mais surtout : à quoi ça servirait ?

See Also

PHP Features

Last updated: 18 September 2026