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

Chaque classe anonyme est différente

<?php

print get_class($c = new class() {});
//class@anonymousphp-wasm run script:3$0
$d = new class() {};

var_dump($c instanceof $d);
// false!

interface i {}

$e = new class() implements i {};
var_dump($e instanceof i);
// true

function foo() {
    return new class() {};
}
$x = foo();
var_dump(foo() instanceof $x);
// syntax error !
// var_dump($x instanceof foo());

?>

Les classes anonymes n’ont pas de nom explicite, pourtant PHP en utilise un en interne. Ce nom est construit à partir de la localisation de la définition de la classe dans le code.

Cela signifie que deux objets de classe anonyme (sic), créés avec le même code, mais à des endroits différents dans le code, sont considérés comme de types différents par PHP.

En revanche, lorsque le même morceau de code produit l’objet de classe anonyme, il est considéré comme appartenant à la même classe.

Notez que la syntaxe foo() instanceof $x est valide, mais $x instanceof foo() ne l’est pas. Le second opérande de instanceof est un peu capricieux et interdit de nombreuses expressions : c’est le cas d’une simple affectation.

See Also

PHP Features

Last updated: 04 October 2026