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 sur un objet

<?php

class X {}

$s = '\x'; new $s;       // a x object
$x = new x(); new $x();  // another x object

$s = x::class;
$a = new $s;            // yet another one

// syntax error, unexpected token "class",
// expecting variable or "$s"
$a = new x::class;

?>

Il est possible d’utiliser new sur un objet pour obtenir un nouvel objet de la même classe. Cela peut être utile avec les classes anonymes, qui ne peuvent pas être créées avec leur nom.

Lorsque l’on utilise les parenthèses après la variable, la méthode magique __invoke() ne sera pas appelée, car ces parenthèses servent à appeler le constructeur. Pour obtenir ce résultat, il faut l’appeler en dehors de la commande new ou entre parenthèses, comme new ($a()).

En coulisses, PHP récupère le nom de la classe à partir de l’objet pour en créer un nouveau. C’est similaire à l’utilisation du nom de la classe sous forme de chaîne.

Enfin, le nom complet de la classe est disponible via la syntaxe x::class, mais PHP ne reconnaît pas new x::class et génère même une erreur fatale : il reconnaît new (x::class).

See Also

PHP Features

Last updated: 11 October 2026